为什么我得到IndexError:列表分配索引超出范围

时间:2020-06-28 22:14:24

标签: python list index-error

我试图了解列表中字母的位置以及出现的时间。 当我获得这些职位时,我想用列表right_user_input中的相同职位代替。

但是只要我尝试执行此操作,它就会返回此错误IndexError: list assignment index out of range.

谁能说出为什么呢?

import random
import re
from words import words

# the word that the user needs to guess
the_guess_word = random.choice(words)

n = 0
# puts the random picked word in a list
l_guess = list(the_guess_word)
box = l_guess

# somethings are not yet finished
print("Welcome To The Guessing Game . \n You get 6 Guesses . The Words Are In Dutch But There Is 1 English Word . "
  "\n If You Would Want To Try Again You Can Press (ctrl+Z)"
  f"\n \n Your Word Has {len(the_guess_word)} letters ")

class hangman:
    t = len(box)
    right_user_input = []

    # should create the amount of letters in the word
    right_user_input.append(t * ".")


    while True:
        # the user guesses the letter
        user_guess = input("guess the word : ")

        # if user guesses it wrong 6 times he or she loses
        if n >= 6 :
            print("you lose!")
            print(f'\n the word was {the_guess_word}')
            break

            # loops over until user gets it right or loses
        if user_guess not in the_guess_word:
                print("\n wrong guess try again ")
                n += 1

        # when user gets it right the list with the dots gets replaced by the guessed word of the user
        if user_guess in the_guess_word :
            print("you got it right")

            # finds the position of the guessed word in the to be guessed the word
            for m in re.finditer(user_guess, the_guess_word):
                right_user_input[m.end()] = user_guess

                print(right_user_input)

# this the error that i get
# i tried searching around but usually people have empty strings in my case that is not the issue .
# and the value in the right_user_input is len(the_guess_word) * "."

   Traceback (most recent call last):
  File "C:/Users/Admin/PycharmProjects/hangman/main.py", line 16, in <module>
    class hangman:
  File "C:/Users/Admin/PycharmProjects/hangman/main.py", line 38, in hangman
    right_user_input[m.end()] = user_guess
IndexError: list assignment index out of range

1 个答案:

答案 0 :(得分:0)

问题是您没有正确设置p = balance; right_user_input只是使变量等于单个t点字符串(right_user_input.append(t * ".")),而不是t个1点字符串(["....."])。

要解决此问题,请通过以下方式声明变量:

[".", ".", ".", ".", "."]

此外,将right_user_input = ["." for i in range(len(the_guess_word))]替换为

right_user_input[m.end()] = user_guess,因为数组从0开始。