Хотя цикл не останавливается с несколькими условиями - PullRequest
0 голосов
/ 03 сентября 2018

Я новичок в кодировании, и я хотел создать код, который мог бы регистрировать людей и регистрировать их снова. Работая над своим кодом, я хотел проверить, хочет ли пользователь войти или зарегистрироваться, поэтому я сделал этот код на python.

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

Хотя цикл не останавливается, даже если переменная удовлетворяет условиям. Я попытался удалить второе условие, и оно почему-то начало работать. Возможно, это глупый вопрос, но, пожалуйста, наберитесь терпения, я ученик старшей школы.

Would you like to login or register?login
Would you like to login or register?register
Would you like to login or register?keeps going :(
Would you like to login or register?

Предполагается, что цикл останавливается, когда вход является логином или регистром. Предполагается, что выходные данные изменяют переменную login_or_register = None для ответа.

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Состояние вашей петли не может стать истинным.

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()

Вы также можете взглянуть на документы по питону для or и and

0 голосов
/ 03 сентября 2018

login_or_register != 'login' or login_or_register != 'register' всегда будет True. Вы, вероятно, хотите использовать логический and:

while login_or_register != 'login' and login_or_register != 'register':
    # ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...