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

Python猜数字程序运行报错:变量‘number’未定义,请求技术协助

解决猜数字程序中"number未定义"的问题

嘿,我来帮你搞定这个报错!你遇到的问题是变量作用域导致的:correct函数里用到了number,但这个变量既没在该函数内部定义,也没有作为参数传递进来,所以Python找不到它,就会抛出"number未定义"的错误。

下面给你两种实用的解决方案,你可以根据需求选择:

方案1:将number作为参数传递给correct函数

这是最规范的做法,能避免全局变量带来的逻辑混乱问题。

首先修改correct函数的定义,添加number参数:

def correct(guesses, number):
    print("You got it correct!")
    print("It was {0}".format(number))
    guesses = guesses + 1
    print ("It took you {0} guesses".format(guesses))

然后在_main_函数里生成随机数number,并在调用correct时把它传进去:

def _main_(guesses):
    # 生成目标数字,这里假设是1到100之间的随机数
    number = random.randint(1, 100)
    # 这里补充你的猜数字逻辑:获取用户输入、判断高低
    # 举个调用correct的例子(当用户猜对时):
    guesses = correct(guesses, number)

另外还要注意:你当前的higher和lower函数里修改的guesses是局部变量,不会影响外部的guesses值,所以需要让函数返回更新后的次数,比如:

def higher(guesses):
    print("Lower")
    return guesses + 1

def lower(guesses):
    print("Higher")
    return guesses + 1

调用时用guesses = higher(guesses)或者guesses = lower(guesses)来累计次数。

方案2:使用全局变量(快速测试可选)

如果你想快速验证功能,可以把number设为全局变量,这样所有函数都能直接访问:

import random
guesses = 0
number = random.randint(1, 100)  # 全局定义目标数字

def higher(guesses):
    print("Lower")
    guesses = guesses + 1
def lower(guesses):
    print("Higher")
    guesses = guesses + 1
def correct(guesses):
    print("You got it correct!")
    print("It was {0}".format(number))  # 直接使用全局变量
    guesses = guesses + 1
    print ("It took you {0} guesses".format(guesses))

不过全局变量容易让代码逻辑变得混乱,后期维护起来麻烦,所以更推荐方案1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:51:01