嵌套循环求和遇TypeError:float对象无法作为整数处理,求解决
问题解决思路与代码
错误原因
range()要求参数必须是整数,但你传入的values_subtraction_average是浮点数(比如5.0、0.0),这直接触发了TypeError。- 第二个循环逻辑完全错误——你不需要用
range()遍历差值,而是要对每个差值取绝对值后累加求和。
正确代码实现
方式一:先收集绝对值差值再求和
values = [29, 24, 20, 28, 22, 22, 23] average = sum(values) / len(values) # 收集每个值与均值差值的绝对值 abs_diff_list = [] for single_value in values: diff = single_value - average abs_diff = abs(diff) abs_diff_list.append(abs_diff) # 求和得到目标结果18 total = sum(abs_diff_list) print(total) # 输出18.0
方式二:直接累加(更高效,无需额外列表)
values = [29, 24, 20, 28, 22, 22, 23] average = sum(values) / len(values) total = 0 for single_value in values: diff = single_value - average total += abs(diff) print(total) # 输出18.0
一行代码简化版(用生成器表达式)
values = [29, 24, 20, 28, 22, 22, 23] average = sum(values) / len(values) total = sum(abs(v - average) for v in values) print(total) # 输出18.0
内容的提问来源于stack exchange,提问作者Drankenkin
相关产品推荐
相关产品推荐

