在while循环中的if语句不起作用

3
import random
#create a sequence of words to choose from
WORDS = ("python", "jumble", "easy", "difficult", "answer", "xylophone")

#pick one word randomly from the sequence
word = random.choice(WORDS)
#create a variable to use later to see if the guess is correct
correct = word
#create a jumbled version of the word
jumble = ""

count = 1
score = 100
hint = ""

while word:
  position = random.randrange(len(word))
  jumble += word[position]
  word = word[:position] + word[(position+1):]

 #start the game
 print ("""

      Welcome to Word Jumble!

Unscramble the letters to make a word.
(Press the enter key at the prompt to quit.)
""")
print("The jumble is: ", jumble)

guess = input("Your guess: ").lower()
while(guess != correct) and (guess != ""):
  print("Sorry, that's not it.")
  guess = input("Your guess: ").lower()
  count += 1
  if count == 3:
    option = input("Would you like a hint? (yes/no)" + '\n').lower()
      if option == "yes":
        hint = "yes"
        if word == "python":
            print("HINT: This was used to make this game.")
        elif word == "jumble":
            print("HINT: The name of the game.")
        elif word == "easy":
            print("HINT: Part of the Staples slogan.")
        elif word == "difficult":
            print("HINT: A synonym for hard.")
        elif word == "answer":
            print("HINT: Opposite of question.")
        elif word == "xylophone":
            print("HINT: An instrument.")



if guess == correct:
  print("That's it! You guess it!\n")
  score = score - 5*count
  if hint == "yes":
    score = score - 20



print("Thanks for playing. The word was", correct, ".")
print("You score is: " + str(score))
input("\n\nPress the enter key to exit.")

所以我用Python做了一个小游戏,基本上是要求用户解开单词的谜题,我在执行所有if语句时遇到了问题。当我运行程序时,它可以正常工作,直到它要求用户给出提示。如果回答提示为“是”,它会回到while循环中,而不是显示提示,只是说“对不起,这不是正确答案”,并继续循环,直到用户得到正确答案。所以代码中的以下if语句没有被执行,有人能解释一下为什么吗?我该如何修复它?
if option == "yes":
        hint = "yes"
        if word == "python":
            print("HINT: This was used to make this game.")
        elif word == "jumble":
            print("HINT: The name of the game.")
        elif word == "easy":
            print("HINT: Part of the Staples slogan.")
        elif word == "difficult":
            print("HINT: A synonym for hard.")
        elif word == "answer":
            print("HINT: Opposite of question.")
        elif word == "xylophone":
            print("HINT: An instrument.")
2个回答

3
问题出在这里:
option = input("Would you like a hint? (yes/no)" + '\n').lower

option被设置为字符串方法lower。您需要调用它:

option = input("Would you like a hint? (yes/no)" + '\n').lower()
                                                              ^^

现在,option 将会是一个字符串。

我刚发布问题时才注意到这一点,但它对问题没有影响,问题仍然存在。 - W. Ahmed
如果程序之前缺少了 (),那么它将无法工作。添加 () 应该会有所不同。你是否保存了源代码并重新运行了它? - TigerhawkT3

3
你正在查找 "word" 是什么,但我认为那不是正确答案(它已经被更改了)。请查找 "correct" 代替:
if option == "yes":
    hint = "yes"
    if correct == "python":
        print("HINT: This was used to make this game.")
    elif correct == "jumble":
        print("HINT: The name of the game.")
    elif correct == "easy":
        print("HINT: Part of the Staples slogan.")
    elif correct == "difficult":
        print("HINT: A synonym for hard.")
    elif correct == "answer":
        print("HINT: Opposite of question.")
    elif correct == "xylophone":
        print("HINT: An instrument.")

之前尝试过,没有成功。 - W. Ahmed
等等,实际上它确实起作用了,在修复Tigerhawk提到的错误并更正后,它起作用了,我的问题是为什么正确与否很重要?两者都包含我想要的实际单词。 - W. Ahmed
@W.Ahmed - 在 while word: 循环中,word 最终会变成一个空字符串,而 jumble 将包含被打乱的单词,而 correct 包含原始单词。 - TigerhawkT3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接