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

Python中发生异常时如何重新执行循环?

问题分析与修复

原代码的核心问题是错误使用了except语句:except number < 0: 这种写法完全不符合语法规则,except只能捕获指定的异常类型(比如输入非整数时的ValueError),而number < 0是个布尔判断条件,根本不是异常,所以当你减到负数时,这个except块根本不会触发。

另外,当number变成负数后,循环条件number !=0依然成立,程序会继续让你输入,但此时number已经是负数,后续操作只会让它更负,完全达不到你想要的提示效果。

修正后的代码

number = 15
print(f"Subtract the number {number} until it has reached 0")
while number != 0:
    try:
        x = int(input())
        # 先判断扣除后会不会负数,再执行操作
        if number - x < 0:
            print("You don't have enough points for that!")
            continue
        number -= x
        if number > 0:
            print(f"You have {number} points to spend!")
        elif number == 0:
            print("You have used all your points!")
            break
    except ValueError:
        # 处理用户输入非整数的情况
        print("Please enter a valid integer!")

关键修改点

  • 把“点数是否足够”的判断移到try块内,在修改number之前先检查number - x < 0,如果成立直接提示并跳过后续操作
  • 新增了对ValueError的捕获,避免用户输入字母等非整数内容导致程序崩溃
  • 当输入的数值会导致负数时,不修改number的值,直接回到循环开头等待下一次输入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:06:24