【发布时间】:2021-12-06 04:24:47
【问题描述】:
我正在计算 csv 文件一列中数字的平均值。它正在工作,但我的回答与它需要的有点不同。例如;我输入的一个过滤器在它应该是 49.94 时返回 49.93。另一个应该是 23.17 时是 23.05。一个是 37.02 而不是 37.21。我要疯了,想弄清楚如何解决这个问题。另外,我最初想要lenl = 0.0,但是当我这样做时它不会计算,因为你不能除以零,即使计数器应该还在上升?请帮忙
import csv
date_index = 0
temp_index = 2
def average_temperature(weather, filter):
thefile = csv_reader("Temperatures.csv")
suml = 0.0
lenl = 1.0
for row in thefile:
if filter in row[date_index]:
suml += float(row[temp_index])
lenl += 1.0
avg = suml / lenl
return avg
【问题讨论】:
-
使
lenl = 0将平均计算取消缩进到最后一次,然后执行avg = suml / (lenl or 1)这将使(0.0/0.0)更改为(0.0/1) -
将 len 初始化为零,而不是一。
-
lenl没有必要是一个浮点数,它自然是一个整数,而且整数可以很好地进行数学运算。 -
欢迎来到 Stack Overflow!请拨打tour。如需调试帮助,您需要创建一个minimal reproducible example,包括完整但最少的代码(首先,调用
average_temperature())和示例输入。看起来 CSV 实际上与问题无关,除了数据所在的位置,在这种情况下,删除 csv 标记。如需更多提示,请参阅How to Ask。