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

Python使用try-except块运行时报Name undefined变量未定义错误怎么解决?

错误原因

你的代码中top_range变量仅在try代码块内赋值,当用户输入的范围上限无法转换为整数时,会触发ValueError进入except分支,此时top_range从未完成定义,后续执行random.randint(0, top_range)时调用了未定义的变量,就会触发「名称未定义」报错。

解决方案

这里提供两种常用修复方案:

方案1:异常分支直接终止程序

在except分支打印提示后直接终止程序,避免后续执行逻辑调用未定义变量,修改后的异常处理段如下:

try:
    top_range = int(input("请输入范围上限:"))
except ValueError:
    print("请输入整数")
    exit() # 输入不合法时直接退出程序

方案2:增加循环校验,强制用户输入合法值

体验更友好的处理方式,循环接收用户输入,直到输入合法整数才继续后续逻辑,完整修改后代码如下:

# 导入random包
import random
# 循环校验范围上限输入
while True:
    try:
        top_range = int(input("请输入范围上限:"))
        break
    except ValueError:
        print("输入不合法,请输入整数")
# 系统生成随机数
sys_guess = random.randint(0, top_range)
print("系统生成的数字为 =", sys_guess)
print("请尝试猜出该数字,最多可猜测3次......!")
# 初始化猜测次数计数器
guess = 0
# 猜测逻辑
while sys_guess >= 0:
    user_input = int(input("请输入你猜测的数字: "))
    if sys_guess != user_input:
        # 猜错时猜测次数+1
        guess += 1
        print("猜测错误-->")
        if guess == 2:
            print("你仅剩1次猜测机会")
        if guess > 2:
            print("已达最大猜测次数,挑战失败!!!!!")
            break
    else:
        # 猜对时猜测次数+1
        guess += 1
        print("!恭喜***猜对了***!")
        break
# 打印总猜测次数
print("总猜测次数=", guess)

注:现有代码中用户猜数字的输入部分也未做异常处理,如果用户输入非整数同样会报错,你可以参考范围上限的校验逻辑自行补充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 00:45:01