You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 10:24:52