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

Python while循环失效求助:输入范围校验功能异常

输入验证循环失效的问题修复

问题根源分析

你的代码存在两个核心问题,导致循环完全不符合预期:

  • 逻辑判断错误:原代码的while not num > 0 and num < 2因运算符优先级问题,实际等价于(not num > 0) and num < 2,仅会匹配负数和0,对于大于等于2的数字根本不会进入循环,直接返回结果。正确的判断应该是检查数字不在0到2的有效范围内,即not (0 < num < 2) 或 num <= 0 or num >= 2。
  • 循环内未更新输入:原循环仅打印提示,但没有重新获取用户输入并更新num的值——就算进入循环,也会无限重复打印提示,永远无法获取符合要求的新值。

修正后的代码

def get_user_option_input():
    # 首次获取输入并转换为整数
    num = int(input('Please enter a number: '))
    # 当数字不在有效范围时,持续循环获取输入
    while not (0 < num < 2):
        num = int(input('Enter selection: '))
    return num
 
number = get_user_option_input()
print(number)

优化建议(处理非数字输入)

如果需要兼容用户输入非数字的情况,可以添加异常处理,避免程序直接报错:

def get_user_option_input():
    while True:
        try:
            num = int(input('Please enter a number: '))
            # 符合范围则直接返回
            if 0 < num < 2:
                return num
            # 不符合则提示重新输入
            print('Enter selection: ')
        except ValueError:
            print('Please enter a valid integer!')
 
number = get_user_option_input()
print(number)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:22:02