Python 解析时的EOF
好吧,这让我很紧张。我似乎无法运行此代码,因为我面临另一个错误。解析时的EOF是什么。出于某种原因,它似乎突出显示了Python 解析时的EOF,python,python-3.x,Python,Python 3.x,好吧,这让我很紧张。我似乎无法运行此代码,因为我面临另一个错误。解析时的EOF是什么。出于某种原因,它似乎突出显示了day=eval(第[0]行],我不知道为什么它的意思是第[0]行包含一个不完整的Python语句。空字符串可以执行此操作,例如: def main(): NUMBER_OF_DAYS = 10 NUMBER_OF_HOURS = 24 data = [] for i in range(NUMBER_OF_DAYS): data.ap
day=eval(第[0]行]
,我不知道为什么它的意思是第[0]行
包含一个不完整的Python语句。空字符串可以执行此操作,例如:
def main():
NUMBER_OF_DAYS = 10
NUMBER_OF_HOURS = 24
data = []
for i in range(NUMBER_OF_DAYS):
data.append([])
for j in range(NUMBER_OF_HOURS):
data[i].append([])
data[i][j].append(0)
data[i][j].append(0)
for k in range(NUMBER_OF_DAYS * NUMBER_OF_HOURS):
line = input().strip().split()
day = eval(line[0])
hour = eval(line[1])
temperature = eval(line[2])
humidity = eval(line[3])
data[day - 1][hour - 1][0] = temperature
data[day - 1][hour - 1][1] = humidity
for i in range(NUMBER_OF_DAYS):
dailyTemperatureTotal = 0
dailyHumidityTotal = 0
for j in range(NUMBER_OF_DAYS):
dailyTemperatureTotal += data[i][j][0]
dailyHumidityTotal += data[i][j][1]
print("Day " + str(i) + "'s average temperature is" + str(dailyTemperatureTotal / NUMBER_OF_HOURS))
print("Day " + str(i) + "'s average humidity is" + str(dailyHumidityTotal / NUMBER_OF_HOURS))
main()
>>> eval('')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
这个结构足以容纳所有总数;当你可以把每天的事情加起来的时候,保持每小时的值是没有意义的
我从stdin
读取数据,而不是使用input()
,直接将每天的温度和湿度相加:
totals = [[0, 0] for _ in range(NUMBER_OF_DAYS)]
计算平均值就变成了:
from itertools import islice
import sys
for line in islice(sys.stdin, NUMBER_OF_DAYS * NUMBER_OF_HOURS):
day, hour, temperature, humidity = map(int, line.split())
data[day - 1][0] += temperature
data[day - 1][1] += humidity
看起来问题出在这一部分
for i, (temp, humidity) in enumerate(data):
print("Day {}'s average temperature is {}".format(i, temp / NUMBER_OF_HOURS))
print("Day {}'s average humidity is {}".format(i, humidity / NUMBER_OF_HOURS))
我假设您希望用户每次输入一个值,然后通过eval处理输入
我不确定eval在做什么,但根据错误消息,line
变量为空,或者具有len(line)==0:True
属性,因此line[0]
不起作用
如果在python3中使用input()
,与python2的input()
相比,它总是将用户输入作为字符串读入。因此它类似于python2的raw\u input()
函数。可能您的eval()
函数缺少从str
到int
的转换?但是,我也不确定eval()
在做什么
也许只需要插入一个
for k in range(NUMBER_OF_DAYS * NUMBER_OF_HOURS):
line = input().strip().split()
day = eval(line[0])
之后
我们将了解更多信息如果您提供一些示例输入,将会有所帮助。
print("\n\nline: {}\n\n".format(line))
for k in range(NUMBER_OF_DAYS * NUMBER_OF_HOURS):
line = input().strip().split()