Python Forum
IndexError: string index out of range ? - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: IndexError: string index out of range ? (/thread-19567.html)



IndexError: string index out of range ? - Q_Y - Jul-04-2019

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


RE: IndexError: string index out of range ? - Yoriz - Jul-04-2019

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



RE: IndexError: string index out of range ? - metulburr - Jul-04-2019

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-Never-use-for-i-in-range-len-sequence


RE: IndexError: string index out of range ? - Q_Y - Jul-05-2019

(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-Never-use-for-i-in-range-len-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


RE: IndexError: string index out of range ? - metulburr - Jul-05-2019

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


RE: IndexError: string index out of range ? - noisefloor - Jul-05-2019

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