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时停止了循环!
答案 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
,则可以停止循环。