Python调用remove方法报AttributeError:'function'无'remove'属性如何解决
问题诊断
- 命名冲突:
datos被同时定义为函数名,你尝试对函数对象调用只有列表才支持的remove()方法,是触发AttributeError的直接原因。 - 函数内部逻辑错误:函数内直接使用
datos[0]、遍历datos时,指向的是外层函数对象而非传入的分数参数;且你传入的第一个参数是字符串类型的学号,不能直接和数字类型的分数比较大小。 - 参数匹配错误:定义函数时只声明了5个参数,调用时传入了学号+5个分数共6个参数,会触发参数数量不匹配的报错。
- 平均值计算逻辑错误:
prom+=i/len(datos)%prom写法不符合求平均的逻辑,求平均值应为剩余分数总和除以剩余分数的数量,无需使用模运算。 - 内置命名覆盖:使用
min作为自定义变量名,覆盖了Python内置的求最小值函数min(),属于不规范的命名习惯。
修正后代码
def calcular_promedio(id_estudiante, *scores): # 将传入的分数转为列表方便操作 score_list = list(scores) # 获取最低分 min_score = min(score_list) # 移除首次出现的最低分 score_list.remove(min_score) # 计算剩余分数的平均值 average = sum(score_list) / len(score_list) # 返回带学号的结果,保留两位小数 return f"学号:{id_estudiante},去掉最低分后的平均分为:{average:.2f}" # 调用测试 print(calcular_promedio('AA0010276',40, 50, 39, 76, 96))
运行结果
学号:AA0010276,去掉最低分后的平均分为:65.50
内容的提问来源于stack exchange,提问作者Cream
相关产品推荐
相关产品推荐

