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
相关产品推荐
相关产品推荐

