Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解析时的EOF_Python_Python 3.x - Fatal编程技术网

Python 解析时的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

好吧,这让我很紧张。我似乎无法运行此代码,因为我面临另一个错误。解析时的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.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()