While循环在允许if语句运行之前两次要求输入

时间:2019-08-19 06:35:58

标签: python loops while-loop

while循环要求输入两次,即使输入在指定列表中也是如此。我需要帮助以找出更好的方法或解决此问题

我是python的新手,所以请很好;),我还没有真正尝试过很多,因为我不知道我还能怎么做。

Y_list = ("Y")
N_list = ("N")

user_choice = input("Y / N")
while user_choice not in Y_list or N_list:
    user_choice = input("Y / N")
if user_choice in Y_list:
    print("U said Y")
elif user_choice in N_list:
    print("U said N")

除非用户输入不在Y列表或N列表中的内容,否则我只想问一个问题

4 个答案:

答案 0 :(得分:1)

我认为您可能想要这样的东西:

Y_list = ("y", "yes", "yeah")
N_list = ("n", "no", "none")

while True:
    user_choice = input("Y / N").lower()
    if user_choice in Y_list:
        print("U said Y")
        break
    elif user_choice in N_list:
        print("U said N")
        break

答案 1 :(得分:0)

您的问题在于while条件下的逻辑操作。您要让python求值:user_choice not in Y_listN_list。这里的第二部分被视为独立的逻辑运算,并且由于N_list不为None,因此它将始终为真。您需要明确指定条件,然后放置AND运算符,以确保您的输入内容不在两个列表中。

Y_list = ["Y"]
N_list = ["N"]

user_choice = input("Y / N")

while user_choice not in Y_list and user_choice not in N_list:
    user_choice = input("Y / N")
if user_choice in Y_list:
    print("U said Y")
elif user_choice in N_list:
    print("U said N")

话虽如此,有更好的方式编写此代码,但重要的是要知道为什么最初的方法行不通。

答案 2 :(得分:0)

您最好写

之类的东西
while True:
    user_choice = input("Y / N")
        user_choice = user_choice.lower()
        if user_choice != "y" or user_choice != "n":
            print("You entered something other than 'y' or 'n'.")
            continue
        else:
            break

这实际上检查用户是否输入了“ y”或“ n”,无论它是大写还是小写。如果不是'y'或'n',则转到循环的顶部,否则,它将继续。

答案 3 :(得分:0)

Y_list = ("Y")
N_list = ("N")

user_choice = ""
while user_choice not in Y_list or N_list:
    user_choice = input("Y / N")
if user_choice in Y_list:
    print("U said Y")
elif user_choice in N_list:
    print("U said N")

只需通过“”启动用户选择。简单的方法。