简体   繁体   English

Python循环无法正常工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM