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

条件判断语句异常:输入非1、2、3时为何循环未正常终止?

问题出在条件判断的写法上!

嘿,我一眼就揪出你代码里的bug了——问题就出在这个条件判断语句上:

if aw in [1,2,3] == False:

为什么这个写法不对?

Python的链式比较规则会把这个表达式解析成:

(aw in [1,2,3]) and ([1,2,3] == False)

而[1,2,3] == False这个判断永远是False,所以不管aw是不是在[1,2,3]里,整个条件的结果都是False。这就导致哪怕你输入1-3之外的数字,也会直接走到else分支执行break,循环直接终止,完全达不到你想要的「输入非法就继续循环」的效果。

怎么修正?

有两种清晰且正确的写法:

  1. 使用not in(推荐,更简洁易读):
    if aw not in [1,2,3]:
    
  2. 用括号明确优先级,把判断逻辑包裹起来:
    if not (aw in [1,2,3]):
    

修正后的完整代码

while True:
    try:
        aw = int(input('Number : '))
        if aw not in [1,2,3]:
            print('give Number again')
        else:
            print('correct')
            break
    except ValueError:
        print('please give a number')

现在测试一下效果:

  • 输入4:会打印give Number again,循环继续
  • 输入2:打印correct,循环终止
  • 输入字符串:打印please give a number,循环继续

完全符合你的预期啦!

内容的提问来源于stack exchange,提问作者Ahmet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:37:44