<p>您正在重写所选单词。<code>generateWord</code>同时是密文,也是用户输入。这不行。其他问题我也要纠正:</p>
<pre><code>import random
secretWords = ["cat", "mouse", "donkey", "ant", "lion"]
generatedWord = random.choice(secretWords)
leftCount = 6
userWord = ["_"] * len(generatedWord)
refusedLetters = ""
#returns all positions of character ch in the string s
def findOccurences(s, ch):
return [i for i, letter in enumerate(s) if letter == ch]
print("Word contains", len(generatedWord), "letters")
while(leftCount > 0 and generatedWord != "".join(userWord)):
print ("\n")
print ("You have", str(leftCount), "attempts remaining")
print ("Letters not present in your word:", "".join(sorted(refusedLetters)))
print ("Your word so far: ","".join(userWord))
print ("\n")
#checks that the user enters something
userInput = ""
while not len(userInput):
userInput=input("Enter letter or word: ")
userInput = userInput.lower()
#if len > 1, then the user has tried to guess the whole word:
if len(userInput) > 1:
if generatedWord == userInput:
print("Congratulations")
break
else:
print("Wrong word, sorry")
#len == 1, thus the user asked for one letter
else:
#if letter isn't already found
if not userInput in userWord:
#for all occurences of the letter in the secret word
occurences = findOccurences(generatedWord, userInput)
for occurence in occurences:
userWord[occurence] = userInput
#if the letter was not found
if not occurences:
#if the letter has already been proposed
if userInput in refusedLetters:
print("You have already tried this letter")
continue
else:
refusedLetters += userInput
else:
print("You have already tried this letter")
continue
leftCount -= 1
#the else statement will only be entered if we did not exit the previous loop via a break.
#Thus, if the word has already been found, nothing happens here.
else:
if generatedWord == "".join(userWord):
print("Congratulations")
else:
print("Game over")
</code></pre>