【发布时间】:2017-02-18 01:40:57
【问题描述】:
我应该做的一件事是从我收到的文件中的数据中找出平均通货膨胀率。它给出了year、interest 和inflation,以及它下面的所有数字。看起来像这样。
year interest inflation
1900 4.61 8.1
这会更进一步,一直到 2008 年。在 Germancoder 的帮助下,我取得了一些进展。不过我还是卡住了。
到目前为止的代码如下所示。
def myTest(file):
with open ('filename', 'r') as f:
inflation = []
header = 1
for line in f:
if header !=1:
infl = line.split(",")[2]
inflation.append(float(infl))
header += 1
avgInflation = sum(inflation)/len(inflation)
return avgInflation
我认为,问题在于顶部的年度利率通胀造成了问题。所以在帮助下,我在代码中添加了一些东西,但我仍然遇到错误。它说除以零错误,第 11 行。对我现在应该做什么有什么想法吗?
实际文件名为 Inflation.csv。我自己做了一个简单的程序,它在解释器中打印出来,用逗号分隔,这就是为什么我这样做 (",")
【问题讨论】:
-
如果 len(inflation) 为零,这意味着您永远不会在通货膨胀列表中添加任何内容。而且您永远不会向列表中添加任何内容,因为您已将 header 设置为 1,并且仅在 header 不是 1 时执行操作。
-
你设置了 header = 1。所以,如果块永远不会被执行。膨胀数组的大小为 0,除以零错误是不可避免的。
-
您传入
file,但从未使用它。 (此外,使用与内置变量同名的变量也是个坏主意。) -
只需将
header += 1与if header !=1对齐,或者直接调用next(f)并忘记它。此外,如果您有 csv,则使用 csv lib 读取文件可能会更好。尽管您在所显示的内容中似乎有空格,但不确定为什么要使用逗号分隔。