why do i get the IndexError: list assignment index out of range
why do i get the IndexError: list assignment index out of range
我想知道某个字母在列表中的位置以及它出现了多少次。
当我得到这些职位时,我想用列表 right_user_input
.
替换相同的职位
但每当我尝试这样做时 returns 这个错误 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
问题是您没有正确设置 right_user_input
。 right_user_input.append(t * ".")
只是使变量等于单个字符串的 t 个点 (["....."]
) 而不是 t 个字符串的 1 个点 ([".", ".", ".", ".", "."]
).
要解决这个问题,请这样声明变量:
right_user_input = ["." for i in range(len(the_guess_word))]
.
此外,将 right_user_input[m.end()] = user_guess
替换为
right_user_input[m.end()-1] = user_guess
因为数组从 0 开始。
我想知道某个字母在列表中的位置以及它出现了多少次。
当我得到这些职位时,我想用列表 right_user_input
.
但每当我尝试这样做时 returns 这个错误 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
问题是您没有正确设置 right_user_input
。 right_user_input.append(t * ".")
只是使变量等于单个字符串的 t 个点 (["....."]
) 而不是 t 个字符串的 1 个点 ([".", ".", ".", ".", "."]
).
要解决这个问题,请这样声明变量:
right_user_input = ["." for i in range(len(the_guess_word))]
.
此外,将 right_user_input[m.end()] = user_guess
替换为
right_user_input[m.end()-1] = user_guess
因为数组从 0 开始。