While循环不会因多种条件而停止

时间:2018-09-03 07:59:57

标签: python loops while-loop

我是编码新手,我想制作一个可以注册人员并重新登录的代码。在编写我的代码时,我想检查用户是否要登录或注册,所以我用python编写了此代码。

DateTime dt = DateTime.ParseExact(stringDate, "yyyy mm dd", CultureInfo.InvariantCulture);

即使变量满足条件,循环也不会停止。我试图删除第二个条件,由于某种原因它开始起作用。 这可能是一个愚蠢的问题,但是请耐心等待,我是一名高中生。

login_or_register = None
while login_or_register != 'login' or login_or_register != 'register':

 login_register = input('Would you like to login or register?')
 login_or_register = login_register.lower()
 login_or_register = login_register

假设输入为登录或注册时停止循环。假设输出将答案更改为login_or_register = None。

2 个答案:

答案 0 :(得分:3)

login_or_register != 'login' or login_or_register != 'register'将始终为True。您可能要使用逻辑and

while login_or_register != 'login' and login_or_register != 'register':
    # ....

答案 1 :(得分:2)

循环的条件不可能变为真。

如果两个条件之一或两者都变为or,则

True返回True。 如果您输入的是'login',则第一个条件为False,第二个条件为True

对于'register',第一个条件变为True,第二个条件变为'False'

在所有其他情况下,两个条件均为True。因此,您创建了一个无限循环。

一种解决方案是将两个条件与and关联,甚至更好地创建一个包含所有允许输入的列表,然后使用in来检查用户输入是否在该列表中。如果您允许用户输入更多选项,这将更加清楚。

例如:

login_or_register = None
while login_or_register not in ['login', 'register']:
    login_register = input('Would you like to login or register?')
    login_or_register = login_register.lower()

您可能还想看看the python docs for or and and