Python函数报错求助:用for loop输入8个值返回均值、最值遇问题
输入8个数值计算均值、最值的函数错误排查
我尝试定义一个函数,通过for循环输入8个不同数值,返回输入值的平均值、最小值和最大值,但遇到了问题。
最初尝试的代码
def x(u): for i in range(8): c=float(input()) y=0 values=[] values.append(c) avg=(y+c)/8 return avg, ("The maximum is {:.0f}".format(max(values))),("The minimum is {:.0f}".format(min(values))) print(x(1))
最初代码的问题
- 循环内每次输入的
c会被覆盖,最后仅将最后一个输入值加入values列表,导致均值、最值计算仅基于单个数值,不符合需求 - 函数定义了参数
u但未使用,属于冗余参数 print(x(1))写在return语句之后,永远不会被执行
修改后的代码及报错
按照建议修改代码后,出现TypeError: 'int' object is not callable错误:
修改后的代码
def function(): values = [] for i in range(8): x=(float(input())) values.append(x) mean = float(sum(values)/len(values)) return mean, max(values), min(values) print(function())
报错信息
TypeError Traceback (most recent call last) <ipython-input-245-dbc2112cdcc7> in <module> 8 return mean, max(values), min(values) 9 ---> 10 print(function()) <ipython-input-245-dbc2112cdcc7> in function() 5 x=(float(input())) 6 values.append(x) ----> 7 mean = float(sum(values)/len(values)) 8 return mean, max(values), min(values) 9 TypeError: 'int' object is not callable
错误原因及解决方法
这个错误是因为你在当前函数之外的代码中,把sum或len这类内置函数名当成了整数变量使用,比如写过sum = 10或len = 5这类语句。这会覆盖原本的内置函数,导致调用sum(values)时,Python认为sum是一个整数而非求和函数,因此触发报错。
解决步骤
- 检查整个代码文件,找到所有用
sum、len、max、min作为变量名的地方,将这些变量名替换为其他名称(比如total_sum、list_length) - 确保不会覆盖任何Python内置函数名
修正后的可运行代码
def calculate_stats(): values = [] for _ in range(8): num = float(input("请输入一个数值:")) values.append(num) mean = sum(values) / len(values) return mean, max(values), min(values) # 调用函数并格式化输出结果 avg, max_val, min_val = calculate_stats() print(f"平均值:{avg},最大值:{max_val},最小值:{min_val}")
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

