if 语句只采用第一个选项,而不管在 Python3 中输入什么。它认为每个选项都是“n”或“n”[重复]

If statement is only taking the first option, regardless of what is inputted in Python3. It think that every option is an 'n' or 'N' [duplicate]

提问人:NSantu10 提问时间:8/12/2023 更新时间:8/12/2023 访问量:44

问:

我正在制作一个 ATM 系统,它似乎无法正常工作,因为无论输入什么,Python3 都会一直认为第一个选项(“n”或“n”)是正确的。谁能帮我解决这个问题?

谢谢你:)

def show_menu():
proceed = False
while proceed == False:
    print('Card Inserted?')
    inp_card = input('Y / N > ')

    if inp_card == 'n' or 'N':
        print('Please input your card')
    elif inp_card == 'y' or 'Y':
        proceed = True
        print('Please input your PIN')
        inp_pin = input('PIN > ')
    else:
        print('Invalid Option!')
else:
    pass
python-3.x if语句

评论


答:

3赞 proof-of-correctness 8/12/2023 #1

当你这样做时,python 将其理解为:“if is true or if is true”。if a or bab

所以 Python 会认为意味着“如果为真或如果为真”if inp_card == 'n' or 'N':inp_card == 'n''N'

'N'在 Python 中被认为是真的(这里有一个链接,解释了 Python 中哪些事情是真的,哪些是假的)

您需要做的是:

    if inp_card == 'n' or inp_card == 'N':
        print('Please input your card')
    elif inp_card == 'y' or inp_card == 'Y':
        proceed = True
        print('Please input your PIN')
        inp_pin = input('PIN > ')

评论

2赞 Matthias 8/12/2023
另一种选择是 or 使用,然后检查较低的字符。if inp_card in {'n', 'N'}inp_card = input('Y / N > ').lower()