如果我输入a为“No”,它会给我一些粗体,两个部分!有人知道怎么修这个东西吗?

时间:2014-11-27 18:39:32

标签: python-3.x

所以...这是我的问题:(任何人都知道修复?它输出:"好的,然后再试一次。"和#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! ")

2 个答案:

答案 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

你也可以在一个中查看noNo,如果这样的话

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