读取输入时出现Python EOF错误

时间:2016-02-27 10:20:39

标签: python

n = input()
dum = input()
d = {}
for i in range(0,n+1):
    x = raw_input()
    x = x.split(" ")
    d[int(x[0])] = int(x[1])

array = d.keys()

for key in d.keys():
    if(d[key]!=0):
        if(d[key] not in d.keys()):
            for i in d.keys():
                for j in d.keys():
                    if(i!=j and i!=key and j!=key):
                        if(i+j==d[key]):
                            # print str(i)+"-"+str(j)
                            if(i in array):

                                array.remove(i)
                            if(j in array):
                                # print j
                                array.remove(j)
        else:
            # print d[key]
            array.remove(d[key])
print array[0]

当我执行这个Python代码时,我在阅读输入时收到“EOF错误”。

你能帮帮忙吗?我正在运行Python 2.7.5

错误追溯

Traceback (most recent call last):
File "prog.py", line 1, in <module>
EOFError: EOF when reading a line

4 个答案:

答案 0 :(得分:3)

虽然使用与您相同的输入,但似乎无法重现此错误。也许你在指定的输入之前有一个newline字符?
尝试使用终端中的python prog.py运行此代码。

如果documentation中所述,在调用EOF errorinput时未提供任何数据,则需要

raw_input

此外,建议在raw_input上获取用户的输入时使用input而非python 2,但它不会修复您的错误。

答案 1 :(得分:1)

在Python 2中,raw_input()返回一个字符串,input()尝试将输入作为Python表达式运行。因此,将第一行更改为类似的内容应该有效。

n = int(raw_input())

根据官方documentation

  

相当于eval(raw_input(prompt))。

     

此功能不会捕获用户错误。如果输入不是   语法有效,将引发SyntaxError。其他例外   如果评估过程中出现错误,可能会被提出。

答案 2 :(得分:0)

此:

for i in range(0,n+1):

执行n+1次迭代,但输入文件为:

5
6
11 21
21 0
31 52
41 61
61 0

当该循环即将开始时,仅剩余n个行数。在尝试读取n+1行时,您将获得EOFError,因为没有更多行。

答案 3 :(得分:0)

我也很困惑这个问题,我无法找到其他资源的直接答案。

然而,对我来说问题是我使用PyCharm和我的.py文件配置错误。基本上,我让它寻找外部文件来源而不是控制台输入。

我必须通过取消选中下面图片中输出控制台&#34; 框中的&#34;模拟终端来更改这些配置,然后才能完美运行。

enter image description here