I want to count number of same letter at beginning between two words (letter by letter) until there’s one different and return who has the most same letter.
This is my code :
JavaScript
x
12
12
1
def same(word, liste):
2
letter = 0
3
dico = dict()
4
for i in liste:
5
while word[letter] == i[letter]:
6
letter += 1;
7
dico[i] = letter;
8
letter = 0;
9
10
same = max(dico, key=dico.get)
11
return same
12
But i get always this error of string index out of range, I’ve tried with much way but nothing
JavaScript
1
4
1
while word[letter] == i[letter]:
2
3
IndexError: string index out of range
4
In input :
JavaScript
1
2
1
same('hello',['hi,'hell','helo'])
2
Output:
JavaScript
1
2
1
'hell'
2
Thanks
Advertisement
Answer
you can’t go out of range in your while
verify the length of your word before word[letter] == i[letter]
while letter < len(word) and letter < len(i) and word[letter] == i[letter]:
gives you :
JavaScript
1
17
17
1
def same(word, liste):
2
letter = 0
3
dico = dict()
4
for i in liste:
5
while letter < len(word) and letter < len(i) and word[letter] == i[letter]:
6
letter += 1;
7
dico[i] = letter;
8
letter = 0;
9
10
same = max(dico, key=dico.get)
11
return same
12
13
print(same('blablabla',['blaze','bli']))
14
15
----------
16
>>> blaze
17