This line:
i = word.find(letter)
always finds the first occurrence of letter in word, and this line:
start = indeces.index(i)
always finds the first occurrence of i in indeces. Then, this line:
index=word.find(letter,start)
includes start, so just finds the same letter straight away!
The only way to make your current code work would be to introduce a while loop, and start after the last occurrence:
for letter in word:
i = word.find(letter)
while i in indeces:
i = word.find(letter, i+1)
indeces.append(i)
This keeps looking until it finds a new i for the current letter. If i isn’t in indeces to start with, the loop never runs.
That being said, this is a hugely inefficient approach; if you want the indices use range:
>>> range(len("patata"))
[0, 1, 2, 3, 4, 5]
and if you want the letters and their indices use enumerate:
>>> list(enumerate("patata"))
[(0, 'p'), (1, 'a'), (2, 't'), (3, 'a'), (4, 't'), (5, 'a')]
1
solved Lists, conditionals and loops don’t give the result expected [closed]