2016-11-27 91 views
0

当我在代码中遇到以下问题时,我正在解决HackerRank上的问题。我在Python(2.7.10)IDLE上测试了它,并且它工作正常。但它表现出对HackerRank以下错误:为什么标准输入()会导致EOF错误

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引擎止跌回升。 感谢

+1

在网络平台通常有一种在其中放置文本输入框,它没有这样做,因为它是在你的终端。 –

+0

这意味着您尝试读取比提供的更多的输入行。给我们一个输入的描述,或者只是一个问题的链接。 –

+0

https://www.hackerrank.com/challenges/30-dictionaries-and-maps?h_r=next-challenge&h_v=zen –

回答

0

我不知道什么是你究竟想通过代码来实现,但你是由于线路inp=input(),它试图把一个字符串作为输入得到一个错误,而它的设计采取intfloatstring entered with quotes in python 2.7。使用raw_input()代替将完整行作为字符串输入,然后将其与space分隔为分隔符。

我跟着你提供的链接,我看到给定的问题需要使用dictionaries来解决。因此,不要附加namenumber,只需将它作为key-value对存储在dictionary中,并且对于每个查询,只需检查密钥是否存在于字典中。如果不是,则打印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" 

希望这有助于!

+0

非常感谢! –

+0

没问题,请将答案标记为已接受。 @YajurTayal – Jarvis

0

我在HackerRank中编码时遇到过类似的EOF问题。其实有两个问题:

  1. 在Python3中使用input()而在Python2中使用raw_input()
  2. 如果您知道确切的输入数量,您可以使用N数for-loop来处理每个input()。然而,难点在于你不知道你会有多少输入。在这种情况下,您将不得不使用sys.stdin.readlines()将它们转换为列表,然后使用for-each循环。

下面的代码是从“编辑部”的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') 
相关问题