Python3条件语句始终误判为'n'/'N'问题求助
问题解决:ATM系统条件判断异常
问题根源
你的条件判断写法存在逻辑错误:if inp_card == 'n' or 'N' 在Python中会被解析为 (inp_card == 'n') or 'N'。由于非空字符串'N'属于真值,无论用户输入什么内容,这个条件都会被判定为True,导致永远进入第一个分支。
修正方案
有两种简洁的修正方式:
- 方式一:明确每个比较条件,确保
or两侧都是完整的判断表达式if inp_card == 'n' or inp_card == 'N': - 方式二:利用字符串
lower()方法统一转换输入格式,简化判断逻辑if inp_card.lower() == 'n':
完整修正后的代码
def show_menu(): proceed = False while proceed == False: print('Card Inserted?') inp_card = input('Y / N > ') if inp_card.lower() == 'n': print('Please input your card') elif inp_card.lower() == 'y': proceed = True print('Please input your PIN') inp_pin = input('PIN > ') else: print('Invalid Option!') else: pass
补充说明
使用lower()方法后,用户输入大写或小写的Y/N都能被正确匹配,同时代码更简洁易读,减少重复判断的冗余。
内容的提问来源于stack exchange,提问作者NSantu10
相关产品推荐
相关产品推荐

