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

Google Colab代码报错:NameError: num变量未定义问题求助

问题排查与代码修正

1. NameError 原因分析

  • num是numbers()函数内部的局部变量,仅在函数内部有效,函数外部无法直接访问。
  • 你调用numbers()时,没有将函数返回的列表赋值给任何变量,后续直接用Math(num)时,Python找不到名为num的全局变量,因此触发NameError。

2. Math函数的逻辑错误

  • 函数中一旦执行return语句,会立即终止函数运行,因此return min(num)之后的代码(包括返回最大值、计算平均值的逻辑)永远不会执行,这个函数只能返回最小值。
  • from statistics import mean放在return语句之后,永远不会被执行,属于无效代码。

3. 修正后的完整代码

from statistics import mean  # 导入语句放在全局作用域更合理

def numbers():
    num = []
    more = 'yes'
    while more == 'yes':
        amount = input("Give me a number!")
        amount = int(amount)
        num.append(amount)
        more = input("Do you have anymore numbers you want to put in?")
        if more == 'no':
            print('ok')
    return num

def Math(num_list):
    min_val = min(num_list)
    max_val = max(num_list)
    avg_val = mean(num_list)
    return min_val, max_val, avg_val  # 一次性返回三个值

# 保存numbers()返回的列表
num_list = numbers()
# 调用Math函数并接收三个返回值
min_result, max_result, avg_result = Math(num_list)

print(f"The minimum is {min_result}, maximum is {max_result}, average is {avg_result}")

额外优化点

  • 可以给输入环节增加异常处理,避免用户输入非数字内容导致程序崩溃(比如用try-except包裹int(amount))。
  • more变量的判断可以简化,不需要额外的if more == 'yes'赋值,因为用户输入的已经是yes/no。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:40:35