提问人:NSantu10 提问时间:8/12/2023 更新时间:8/12/2023 访问量:44
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]
问:
我正在制作一个 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
答:
3赞
proof-of-correctness
8/12/2023
#1
当你这样做时,python 将其理解为:“if is true or if is true”。if a or b
a
b
所以 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()
上一个:Python3 未在 if 语句中正确检查列表中的数字
下一个:我的井字游戏有问题
评论