我有一个while
循环,如果您回答错误的问题,它会重复该问题,但是当我第一次正确时,它会再次询问,第二次它会起作用。代码:
def signup():
signup=input("Enter a username: ")
signup2=input("Enter a password: ")
def login():
login=input("Enter your username: ")
login2=input("Enter your password: ")
option=input("Would you like to login or signup?: ")
while option != "signup" or option != "login":
option=input("Would you like to login or signup?: ")
if option == "signup":
signup()
elif option == "login":
login()
,响应为:
Would you like to login or signup?: signup
Would you like to login or signup?: signup
Enter a username:
答案 0 :(得分:1)
您的条件不正确。如果option
彼此相等,则保证为真。您要使用and
而不是or
while option != "signup" and option != "login":
while not (option == "signup" or option == "login"):
不过,最好的解决方案是对显式break
语句使用“无限”循环,这样您只需将一次对input
的调用写入。
while True:
option=input("Would you like to login or signup?: ")
if option == "signup" or option == "login":
break
if option == "signup":
signup()
elif option == "login":
login()
答案 1 :(得分:0)
当然,因为您还首先将option=input("Would you like to login or signup?: ")
放在循环外部。要进行这种循环,最好进行无限循环并在某个条件下中断:
while True:
option=input("Would you like to login or signup?: ")
if option == "signup":
signup()
break
elif option == "login":
login()
break
答案 2 :(得分:0)
您正在循环内第二次请求输入。仅当输入不是有效选择之一时,才应该这样做。
您应该使用and
而不是or
来测试输入。参见Why non-equality check of one variable against many values always returns true?
最后,您应该在循环后处理输入 ,因为那样的话它将包含有效的选择。
option=input("Would you like to login or signup?: ")
while option != "signup" and option != "login":
option=input("Would you like to login or signup?: ")
if option == "signup":
signup()
elif option == "login":
login()