Python Forum

Full Version: IndexError: string index out of range ?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello all,

I just start to learn python, working on the chapter of THE BAGELS DEDUCTION GAME.

No matter how hard I am, the order just failed.

Always showing:
Error:
Traceback (most recent call last): File "/Users/qiyin/Downloads/Python37/bagels.py", line 56, in <module> print(getClues(guess, secretNum)) File "/Users/qiyin/Downloads/Python37/bagels.py", line 20, in getClues if len(guess[i]) == len(secretNum[i]): IndexError: string index out of range
This is the order of Line 20 and line 56
Line 20:
    clues = []
    for i in range(len(guess)):
        if guess[i] == secretNum[i]:
            clues.append('Fermi')
        elif guess[i] in secretNum:
            clues.append('Pico')
Line56
while True:
    secretNum = getSecretNum()
    print('I have thought up a number. You have %s guesses to get it.' % (MAX_GUESS))

    guessesTaken = 1
    while guessesTaken <= MAX_GUESS:
        guess = ''
        while len(guess) != NUM_DIGITS or not isOnlyDigits(guess):
            print('Guess #%s: ' % (guessesTaken))
            guess = input()

        print(getClues(guess, secretNum))
        guessesTaken += 1
Anyone could tell me what was happed?

Thanks a lot..

Best
That error happens when a string index used is not a valid index of the string.

In the next example the last index of 'string' is 5, using 6 gives the error.

>>> 'string'[6]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range
Based on your error secretNum[i] is going out of index. Although you shoukdnt be using range(len(sequence)) ever in python.

https://python-forum.io/Thread-Basic-Nev...n-sequence
(Jul-04-2019, 06:42 PM)Yoriz Wrote: [ -> ]That error happens when a string index used is not a valid index of the string.

In the next example the last index of 'string' is 5, using 6 gives the error.

>>> 'string'[6]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

Hello Yoriz,

Thank you for your help about the post and reply. How should I modify this order to make it done?

Best

(Jul-04-2019, 06:44 PM)metulburr Wrote: [ -> ]Based on your error secretNum[i] is going out of index. Although you shoukdnt be using range(len(sequence)) ever in python.

https://python-forum.io/Thread-Basic-Nev...n-sequence


Thank you very much for your help. I just wrote the order from the book, and not totally understood what was this order meaning? Based on the orders I provided, how to modify it to make it done?

Best
It explains in that link i provided. Instead of looping through indexes you loop directly the sequence.
Hi,

Quote:I just wrote the order from the book,
If this code is really shown in a book -> throw away the book, it teaches bad Python. Iterating over an iterable with range(len(...)) as an antipattern. Also the style your variable names are written is not the pythonic way to do it.

Regards, noisefloor