Python-EOFError:读取一行时的EOF

时间:2015-07-29 15:02:48

标签: python python-2.7

我正在尝试使用以下代码解决问题:

def inmobi(t):
    while t:
        li = map(int, raw_input().split())
        n, ans = li[0], li[1:]
        one, two, op = [], [], []
        for e in range(n):
            for i in range(1, n):
                if e + i < n:
                    one.append(ans[e] + ans[e + i])
        two = sorted(one)           
        print two[n-1] - two[n-2]
        t += 1
t = int(raw_input())
inmobi(t)

当我在Ubuntu中使用Linux shell运行时,此代码为我提供了所需的输出。但是,当我尝试使用竞争性编程网站提供的解释器运行此代码时,我收到以下错误:

Traceback (most recent call last):
  File "/tmp/editor_trsource_1438181626_447674.py", line 14, in 
    inmobi(t)               
  File "/tmp/editor_trsource_1438181626_447674.py", line 3, in inmobi
    li = map(int, raw_input().split())
EOFError: EOF when reading a line

我试着阅读其他类似问题的答案,但似乎没有一个问题适合我的情况。

1 个答案:

答案 0 :(得分:1)

根据竞争性编程网站的说法,我认为输入的第一行是测试用例的数量(通常就是这种情况)。

您的问题基本符合要求 -

t += 1

在这里,你不断增加t的值,但你的while条件是while t:t永远不会失败,因此循环永远不会退出,所以基本上while循环是一个无限循环,在输入形成编程竞赛网站后很快就会耗尽,导致您看到的EOFError。我不知道它在Linux中是如何工作的,但它应该在那里进入无限循环。你应该减少t,而不是增加它。

t -= 1