【发布时间】:2015-10-23 17:40:19
【问题描述】:
我们必须计算一个大于 130 和小于 -70 的数字在 Excel 工作表中每行的第二列出现的次数,保存为 csv 文件。我需要一个循环,但我已经在它上面有一个循环,用于计算行中的不同列。我似乎无法获得一个循环所有行 [4] 并将其计算为一个变量的代码。这是我的代码。
import csv
import os
total = 0
count = 0
ring = 0
column = []
with open("2.5_week.csv") as source:
rdr = csv.reader(source, delimiter=',')
next(rdr, None) # to skip the header
for row in rdr:
if float(row[4]):
total = total + float(row[4])
count = count + 1
while (float(row[2]) >= 130 and float(row[2]) <= -70):
ring = ring + 1
print(ring)
percent = (ring/count) * 100
ave = total / count
print (ave, percent)
它适用于 if 循环并打印 'ave' 但似乎跳过了 while 循环。提前致谢
【问题讨论】:
-
您的 while 循环可能未计算为 true。
-
没有大于 130 且小于 -70 的数字。你的情况永远不会是真的。 (如果条件为真,您的 while 循环也将永远运行,因为您永远不会更改其中 row[2] 的值...)
-
是的,可以。
-
好在 while 循环永远不会是真的,因为如果是真的,它将永远运行,因为
row的值在循环中永远不会改变。确定你不只是想要一个if吗? -
循环永远不会被跳过。总会有评估发生。它可能会跳过循环语句,但条件总是检查“for”的每次迭代
标签: python csv python-3.x