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

为什么Python整数输入校验逻辑无法正确执行?

代码问题核心原因
  • 逻辑运算符优先级错误
    not 优先级高于or,你写的判断条件实际等价于(not Sens == 0) or (Sens == 1) or (Sens == 2) or (Sens == 3) or (Sens == 4) or (Sens == 5)。只要Sens不等于0,整个判断结果就为真,直接触发Invalid提示,仅当Sens等于0时not Sens ==0为假,后续所有等于1-5的判断也为假,整个条件为假,才不会触发错误提示,和你遇到的现象完全吻合。
  • 输入类型不匹配
    Python的input()函数默认返回字符串类型,直接和整数0-5做相等判断,结果永远为假,哪怕你输入的内容是"1",和int类型的1比较也会返回不相等。
最简修复方案

使用成员运算符替代冗长的or判断,同时统一判断类型,完全规避逻辑优先级和类型不匹配问题:

Sens = input("""Sensitivity (MIN SENS 0, 1, 2, 3, 4, 5 MAX SENS): """)
# 直接和字符串类型的允许值做判断,无需转类型
if Sens not in {'0', '1', '2', '3', '4', '5'}:
    print("Invalid: [{}]".format(Sens))
    print("Defaulting to 1")
    Sens = '1'
# 后续需要用数值的话再转int即可:sens_val = int(Sens)
更健壮的兼容方案

如果允许用户输入前后带空格、或者需要直接使用数值类型,可以增加异常捕获处理非数字输入的场景:

Sens = input("""Sensitivity (MIN SENS 0, 1, 2, 3, 4, 5 MAX SENS): """).strip()
try:
    sens_val = int(Sens)
    if not 0 <= sens_val <=5:
        raise ValueError
except ValueError:
    print(f"Invalid: [{Sens}]")
    print("Defaulting to 1")
    sens_val = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:45:03