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列表中的内容,否则我只想问一个问题
答案 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_list
或N_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")
只需通过“”启动用户选择。简单的方法。