【发布时间】:2015-05-23 08:17:20
【问题描述】:
数据如下所示:
line = infile.readlines()
line
['56047257 16 17 19 16 12 15 12 20 58 123 59\n',
'97231934 18 16 13 19 16 12 13 18 72 101 55\n',
....same]
我想通过使用下面的循环获得 2 到 9 列的平均值并获得 2 到 12 列的最大值和最小值,但它一直给我一个错误:
File "<string>", line unknown
^
SyntaxError: unexpected EOF while parsing
这就是我的代码的样子:
def main():
#read data in
infile = open('data.txt', 'r')
sun = 0.0
count = 0
line = infile.readline()
while line != "":
ID = line.split(" ")
min_val = float('inf')
max_val = -float('inf')
count_min = 0
count_max = 0
for xStr in line.split(' ')[1:9]:
sun = sun + eval(xStr)
count = count + 1
avg = round(sun / count, 2)
val = eval(xStr)
if val < min_val:
min_val = val
count_min = 1
elif val == min_val:
count_min += 1
if val > max_val:
max_val = val
count_max = 1
elif val == max_val:
count_max += 1
line = infile.readline()
print (ID, ' ',avg,' ',min_val,' ',max_val)
main()
【问题讨论】:
-
能否添加错误所在的行?
-
在空字符串上使用
eval会导致 EOF 错误。 xStr 曾经是一个空字符串吗? -
如果我错了,请纠正我,但你有一个无限的
while循环 -
好像是这样。实际代码中是否也存在缩进错误?
标签: python loops python-3.x for-loop while-loop