为什么标准输入()会导致EOF错误

时间:2016-11-27 12:01:02

标签: python eoferror

当我在代码中遇到以下问题时,我正在解决HackerRank上的问题。我在我的Python(2.7.10)IDLE上测试了它,它运行正常。但它在HackerRank上显示以下错误:

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

我输入了以下代码:

import sys 
input_2=""
n=int(input())
m=0
l=0
array=[]
main_array=[]
for i in range (0,n):
    inp=input()
    array=(inp.split(" "))
    main_array+=array   
for no in range(0,100000,1):    
    input_2=input()
    for m in range(0,len(main_array),2):
        l=0
        if input_2==main_array[m]:
            l+=1
            print (main_array[m]+"="+main_array[m+1])
    if l==0:
        print ("Not found")

我不知道为什么HackerRank Engine中出现了这个错误。 感谢

2 个答案:

答案 0 :(得分:0)

我不知道你究竟想通过你的代码实现什么,但是由于行inp=input(),你试图把一个字符串作为输入而得到一个错误,而它的设计是为了int中的floatstring entered with quotespython 2.7。请使用raw_input()将整行作为字符串输入,然后将其作为分隔符以space拆分。

我按照您提供的链接,我看到需要使用dictionaries解决给定的问题。因此,不要附加namenumber,只需将其存储在dictionary中作为key-value对,并且对于每个查询,只需检查字符中是否存在密钥或不。如果没有,请打印Not found,否则打印密钥及其对应的值。以下是供参考的代码:

import sys
input_2=""
n = input()
m=0
l=0
array=[]
main_array={}
for i in range (0,n):
    inp=raw_input()
    array=(inp.split())
    main_array[array[0]] = array[1]
for i in range(0,n):
    take = raw_input()
    if take in main_array :
        print take+"="+main_array[take]
    else :
        print "Not found"

希望这有帮助!

答案 1 :(得分:0)

我在HackerRank中编码时遇到了类似的EOF问题。实际上,有两个问题:

  1. 在Python3中使用input(),在Python2中使用raw_input()
  2. 如果您知道确切的输入数量,则可以使用N-number for-loop来处理每个input()。但是,困难在于您不知道您将拥有多少输入。在这种情况下,您必须使用sys.stdin.readlines()将它们转换为列表,然后使用for-each循环。
  3. 以下代码来自&#34;编辑&#34; https://www.hackerrank.com/challenges/30-dictionaries-and-maps/

    import sys 
    
    # Read input and assemble Phone Book
    n = int(input())
    phoneBook = {}
    for i in range(n):
        contact = input().split(' ')
        phoneBook[contact[0]] = contact[1]
    
    # Process Queries
    lines = sys.stdin.readlines()  # convert lines to list
    for i in lines:
        name = i.strip()
        if name in phoneBook:
            print(name + '=' + str( phoneBook[name] ))
        else:
            print('Not found')