I am very new to Python (I've been learning it for about 2 weeks, in a
class). I wrote this function ( as part of a larger program, for my
homework) which is supposed to step through two given strings and check for
differences between the strings. It returns a list of the indices at which
the characters are different. Here it is:

def getDiff(word1,word2):
   #this function takes two words and returns a list containing the index
of each point of difference in the words
   difList = [] #creates empty list to hold index (location) of differences
in words
   index = 0 #sets variable index to 0 to start
   for item in word1: #steps throug string
       if item == item in word2: #checks characters against each other
           print "there is a match at index ", index
           print word1[index]
           print word2[index]
           index += 1 #increments index

       else:
           print "they are not the same at index ", index
           print word1[index]
           print word2[index]
           difList.append(index) #adds index value to list
           index += 1 # increments index
   return difList

It works, but only sometimes-- in some cases, it evaluates letters that are
different as being the same. Seems to be happening after a run of a few
matching letters? It also works for "carpet" "carrot", but not for "carrot"
"carpet". I think it must be something wrong with the structure of the
loop-- or how i am using it-- but I can't see it. Does anyone have any
suggestions? Here is output from some sample runs:

getDiff("desk","foot") # works fine
they are not the same at index  0
d
f
they are not the same at index  1
e
o
they are not the same at index  2
s
o
they are not the same at index  3
k
t
[0, 1, 2, 3]
getDiff("beep","bees") # works fine
there is a match at index  0
b
b
there is a match at index  1
e
e
there is a match at index  2
e
e
they are not the same at index  3
p
s
[3]
getDiff("freeze","fresia")  # this one did not work!
there is a match at index  0
f
f
there is a match at index  1
r
r
there is a match at index  2
e
e
there is a match at index  3
e
s
they are not the same at index  4
z
i
there is a match at index  5
e
a
[4]
getDiff("carrot","carpet") # this one did not work!
there is a match at index  0
c
c
there is a match at index  1
a
a
there is a match at index  2
r
r
there is a match at index  3
r
p
they are not the same at index  4
o
e
there is a match at index  5
t
t
[4]
getDiff("carpet","carrot") #but this does work (inverted order from
above)
there is a match at index  0
c
c
there is a match at index  1
a
a
there is a match at index  2
r
r
they are not the same at index  3
p
r
they are not the same at index  4
e
o
there is a match at index  5
t
t
[3, 4]
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to