[英]Python Loop isnt working properly
I am trying to create a game where user enters letters until they guess the secret word, but for some reason my lists are not updating properly. 我正在尝试创建一个游戏,在该游戏中用户输入字母,直到他们猜出这个秘密单词为止,但是由于某些原因,我的列表无法正确更新。 Lets say the secret word is TOYS, if the user guesses T it displays T _ _ _ and then the user enters S but the word still displays T_ _ _ , adds S to the list of lettersInWord, and tells the user that S is NOT in the word.
可以说这个秘密单词是TOYS,如果用户猜到了T,它会显示T _ _ _,然后用户输入S,但该单词仍然显示T_ _ _,并将S添加到letterInWord列表中,并告诉用户S不是一句话。 The loops are run in a while loop but the problem occurs inside the loop.
循环在while循环中运行,但是问题在循环内部发生。
letter = input("Enter letter: ")
if letter not in enteredLetters:
find = sentence.find(letter)
if find == -1:
print("Letter is not in word")
else:
newSentence = ""
lettersInWord.append(letter)
for letter in sentence:
if letter in lettersInWord:
newSentence = newSentence + letter
else:
newSentence = newSentence + "_ "
elif letter in enteredLetters:
print ("The letter has been used")
print (newSentence)
enteredLetters.append(letter)
You are rebinding letter
in your loop: 您正在循环中重新绑定
letter
:
for letter in sentence:
if letter in lettersInWord:
letter
is now a character in sentence
, not the original user input. letter
现在是sentence
的字符, 而不是原始的用户输入。 After that loop it'll still be bound to the last character in sentence
, so 'S'
. 在该循环之后,它仍将绑定到
sentence
的最后一个字符,因此为'S'
。
At the end of your code, it is this character (the last one in your sentence) that is added to enteredLetters
: 在代码末尾, 此字符(句子中的最后一个)被添加到
enteredLetters
:
enteredLetters.append(letter)
so enteredLetters
now contains ['S']
, not ['T']
. 所以
enteredLetters
现在包含['S']
而不是 ['T']
。
You'll need to pick a different name for the loop variable; 您需要为循环变量选择一个不同的名称。
char
is a commonly used name: char
是一个常用名称:
for char in sentence:
if char in lettersInWord:
newSentence = newSentence + char
else:
newSentence = newSentence + "_ "
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.