# [Tutor] function won't import from module

Javier Ruere javier at ruere.com.ar
Tue Aug 9 08:22:32 CEST 2005

```Dick Moores wrote:
> I have a bunch of functions I've collected in one script, "mycalc.py",
> which I use as a module, "mycalc". The last one I wrote, cmpSeq() is as
> follows:
>
[code]
>
> In a script, cmpSeq() works fine. For example followed by
>
[example]
>
> The output is:
>
[output]
>
> cmpSeq() is now copy-pasted into mycalc.py, but is not useable there:
>
[example]
>
> which produces:
>
[Traceback]
>
> However, other functions in mycalc work fine. For example:
>
[example]
>
> That may have been a bit long-winded; if so, I apologize.

Not at all! :)
I couldn't reproduce the error. The problem is not in the given code then. Use PyChecker or PyLint to aid you find the problem.

for index in range(len(shorterOrEqualSequence)):
if seq1[index] != seq2[index]:
prints...
break

if index == len(shorterOrEqualSequence)-1:
print "sequences are identical thru end of shorter sequence at index", index

this could be used:

for index in range(len(shorterOrEqualSequence)):
if seq1[index] != seq2[index]:
prints...
break
else:
print "sequences are identical thru end of shorter sequence at index", index

if len(seq1) >= len(seq2):
shorterOrEqualSequence = seq2
else:
shorterOrEqualSequence = seq1

for index in range(len(shorterOrEqualSequence)):
etc.

this could be used:

for index in xrange(min(len(seq1), len(seq2))):
etc.

The main loop, I would write it like this:

from itertools import izip, count

def cmpSeq(seq1, seq2):
"""
find first index at which two sequences differ
"""
if seq1 == seq2:
print "Sequences are identical, and of length %d" % len(seq1)
return None

for i, ca, cb in izip(count(), seq1, seq2):
if ca != cb:
print "sequences first differ at index", index
print "seq1[%d] = %s" % (index, seq1[index])
print "seq2[%d] = %s" % (index, seq2[index])
break
else:
print "sequences are identical thru end of shorter sequence at index", i

Javier

```