с использованием операторов "Пока" - PullRequest
0 голосов
/ 05 мая 2020

При попытке сделать так, чтобы, когда пользователь не вводил логин или не регистрировался во входных данных, программа предлагала им выбрать один из имеющихся вариантов, но когда я пытаюсь ввести оператор или в условие оператора while и нажмите кнопку выполнить, программа будет продолжать повторять одно и то же, даже если пользователь вводит логин или регистр, но когда я удаляю оператор или, оператор while работает ....... ps i Я новичок в python

def menu ():

print("Welcome to the banking app")
print("Would you like to login or register?")

ans = input()

while ans != "login" or 'register':
    print("Please choose the choices given")
    ans = input()



if ans == 'login':
    print('They want to log in')
elif ans == 'register':
    print('They want to register')    

menu ()

Ответы [ 3 ]

3 голосов
/ 05 мая 2020

Строка while ans != "login" or 'register': не делает то, что вы думаете. Сначала он оценивает ans != "login" как True или False. Затем он оценивает 'register' как True или False. Видите ли, 'регистр' всегда будет оценивать истину, потому что он непустой (python оценивает все непустые элементы как истинные в логическом контексте).

То, что вы хотите использовать, это:

while ans != "login" and ans != "register":

Вы также можете использовать:

while ans not in ["login", "register"]:
0 голосов
/ 05 мая 2020
print("Welcome to the banking app")
print("Would you like to login or register?")
ans=''
while ans != "login" or "register":
    print("Please choose the choices given")
    ans = input()
    if ans == 'login':
        print('They want to log in')
        break
    elif ans == 'register':
        print('They want to register')
        break
0 голосов
/ 05 мая 2020

Проблема в вашем состоянии, or в данном случае не подходит, вам нужно использовать and. Но если вам нужно добавить дополнительные элементы в условие, оно может быть действительно огромным, поэтому вы также можете проверить, находится ли ans внутри списка предопределенных ответов:

print("Welcome to the banking app")
print("Would you like to login or register?")

ans = ""

while ans not in ["register", "login"]::
    ans = input("Please choose the choices given ")

print('They want to ', ans)   
...