2016-11-27 92 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') 
相關問題