我正在尝试创建一个用户输入字母的游戏,直到他们猜出这个秘密字,但由于某种原因,我的列表没有正确更新。 让我们说秘密单词是TOYS,如果用户猜到T它显示T _ _ _然后用户输入S但是单词仍然显示T_ _ _,将S添加到lettersInWord列表中,并告诉用户S不是在这个词中。循环在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)
答案 0 :(得分:0)
您正在循环中重新绑定letter
:
for letter in sentence:
if letter in lettersInWord:
letter
现在是sentence
中的字符,不是原始用户输入。在该循环之后,它仍将绑定到sentence
中的最后一个字符,因此'S'
。
在代码的最后,这个字符(句子中的最后一个字符)被添加到enteredLetters
:
enteredLetters.append(letter)
所以enteredLetters
现在包含['S']
,不 ['T']
。
您需要为循环变量选择一个不同的名称; char
是一个常用名称:
for char in sentence:
if char in lettersInWord:
newSentence = newSentence + char
else:
newSentence = newSentence + "_ "