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

如何在Python中按ENTER键终止循环并处理非整数输入报错

代码修正方案

你现有代码的核心问题是逻辑顺序错误,变量调用时机不符合执行规则:

  • 你直接将输入结果套入int()转换,空输入''转整数会直接触发ValueError,完全走不到后续num == ''的判断逻辑,且已经转成整数的num也不可能等于字符串类型的空值。
  • 触发ValueError时,存储整数的num还没有完成赋值,直接调用该变量拼接字符串必然报错。
  • 额外需要注意:不要用list作为变量名,这是Python内置的列表类型保留字,覆盖后会引发未知的功能异常。

可直接运行的修正代码

num_list = []
while True:
    # 先存储原始输入内容
    input_content = input('请输入整数:')
    # 优先判断是否为回车触发的空输入
    if input_content == '':
        num_list.sort()
        print(num_list)
        break
    # 非空输入再尝试转整数
    try:
        num = int(input_content)
        num_list.append(num)
    except ValueError:
        # 直接用原始输入拼接提示语
        print(f'{input_content} 不是整数,请重新输入。')

如果需要保留英文提示,把打印语句替换为:

print(f'{input_content} is not an integer, try again.')

核心修改点

  1. 提前缓存原始输入:不直接对input()的结果做类型转换,先赋值给单独变量,同时满足空输入判断、异常提示拼接两个需求。
  2. 调整执行顺序:先判断是否为空输入,符合退出条件直接执行排序输出逻辑,不需要走后续类型转换流程。
  3. 异常提示逻辑优化:类型转换失败时直接调用提前缓存的原始输入内容,不会出现变量未定义的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:24:04