python3输入的EOFError()

时间:2016-05-24 13:51:00

标签: python-3.x

python 3代码:

while True:
    a = []
    s = input()
    if s == '-1':
        break
    else:
        #input
        for x in s.split():
            a.append(int(x))
        #count
        n = len(a)-1
        cnt = 0
        for x in range(n-1):
            for y in range(x+1, n):
                if a[x]+a[x] == a[y] or a[x] == a[y]+a[y]:
                    cnt += 1
        print(cnt)

,输入数据为:

1 4 3 2 22 0
2 4 10 0
5 6 0
-1

但是在ubuntu 14下它会出错:

Traceback (most recent call last):
  File "Main.py", line 3, in <module>
    s = input()
EOFError: EOF when reading a line

为什么呢?我在s == - 1时停止了循环!

2 个答案:

答案 0 :(得分:0)

input()raw_input()之类的内置函数在遇到输入流的结尾之前未读取任何数据时,就会引发EOFError。

诸如read()之类的文件方法在文件末尾返回一个空字符串。 发生这种情况的原因是,当编译器编译代码时,它最终将获得EOF,而无需执行其他操作。

为此尝试使用try-except方法

答案 1 :(得分:-1)

input() 不是逐行读取数据,而是一次性读取所有数据。所以 s = '1 4 3 2 22 0\n2 4 10 0\n5 6 0\n-1' 在您的代码中,这就是您的代码没有停止循环的原因。如果直接输入-1,则可以停止循环。