Python Loop无法正常工作

时间:2014-04-05 17:39:24

标签: python list loops python-3.x

我正在尝试创建一个用户输入字母的游戏,直到他们猜出这个秘密字,但由于某种原因,我的列表没有正确更新。 让我们说秘密单词是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)

1 个答案:

答案 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 + "_ "