所以...这是我的问题:(任何人都知道修复?它输出:"好的,然后再试一次。"和#34;错误:你没有输入是或者没有!"真的想解决这个问题。尝试制作基于文本的游戏,因为它们有时很有趣,特别是有很好的故事情节
# Infinite loop until yes or Yes is in-putted
while True:
# Ask name
name = input("What is your name? ")
if len(name) == 0:
print("Invalid name, cannot leave blank!")
if len(name) > 0:
a = input("Are you sure this is your name? (Yes/No) ")
# What yes/no/anything else does
if a == "yes":
print("Cool name", name)
break
# HERE IS MY PROBLEM:
if a == "No":
print("Ok, try again then. ")
if a == "Yes":
print("Cool name", name)
break
if a == "no":
print("Ok, try again then. ")
# AND HERE:
else:
print("ERROR: You did not input yes or no! ")
答案 0 :(得分:0)
输出:“好的,再试一次。”
确定。这是预期的行为,因为它进入了if a == "No":
和“错误:你没有投入是或否!”
这也是预期的。这里
if a == "no":
print("Ok, try again then. ")
# AND HERE:
else:
print("ERROR: You did not input yes or no! ")
它不输入if,因为"No"
不等于"no"
。因此它进入else并打印错误。
这应该解决它
if a == "No":
print("Ok, try again then. ")
elif a == "Yes":
print("Cool name", name)
break
elif a == "no":
print("Ok, try again then. ")
else:
print("ERROR: You did not input yes or no! ")\
请参阅https://docs.python.org/2/tutorial/controlflow.html
你也可以在一个中查看no
和No
,如果这样的话
if a == "no" or a == "No":
或者像这样
if a in ["no", "No"]
答案 1 :(得分:0)
最后一个只是前一个if的其他声明。
将您的语句转换为elif并且它可以正常工作 - 但这仍然不是最佳编码。
也许在定义:
后尝试这个a.lower()
这使得答案为小写,因此您无需单独测试“是”和“是”。它更简单,更pythonic。你也可以使用这样的语句:
if a == 'yes' or a == 'Yes' or a == 'Y' or a == 'y':
# do stuff