为什么我的while循环中的elif不起作用?

2024-03-28 08:38:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始学习python并尝试创建一个基本的while循环,但当我运行它时,它不运行elif语句,即如果userguess为==“tiger”,则不会打印“几乎”。。 由于我不熟悉这一点,任何解释都将不胜感激。谢谢

animal = "lion"
userguess = raw_input("guess an animal: ")

while userguess != animal:
  userguess = raw_input("guess an animal: ")
  if userguess == animal:
    print("you got it")
    break
  elif userguess == "tiger":
    print("almost, try again: ")
  else:
    print("try again: ")

Tags: aninputrawif语句printtrytiger
1条回答
网友
1楼 · 发布于 2024-03-28 08:38:19

这是因为在到达if块之前,您要调用raw_input两次。因此,用户必须在进行任何检查之前输入两个动物。在

guess an animal: tiger
guess an animal: tiger
almost, try again:
guess an animal:

如果希望用户只需猜测一次,请将第二个raw_input移到循环的末尾。在

^{pr2}$

或者,将第二个raw_input调用留在原处,并用一个伪值替换第一个调用。在

animal = "lion"
userguess = None

while userguess != animal:
  userguess = raw_input("guess an animal: ")
  if userguess == animal:
    print("you got it")
    break
  elif userguess == "tiger":
    print("almost, try again: ")
  else:
    print("try again: ")

您还可以完全删除初始赋值以及while循环的条件赋值。{{cd6>始终是触发cd6}之前的条件。在

animal = "lion"

while True:
  userguess = raw_input("guess an animal: ")
  if userguess == animal:
    print("you got it")
    break
  elif userguess == "tiger":
    print("almost, try again: ")
  else:
    print("try again: ")

第二种和第三种方法可能比第一种方法更好,因为它们可以确保即使用户在第一次尝试时猜到“狮子”时也能打印出“yougot it”。在

相关问题 更多 >