2016-11-27 15 views
0

私のコードで次の問題が発生したときに、HackerRankで問題を解決していました。私はPython(2.7.10)IDLEでテストしましたが、うまくいきました。しかし、それはHackerRankに次のエラーが示された:私は次のコードを入力し標準のinput()がEOFエラーの原因

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

を:このエラーはHackerRankエンジンに上がってなぜ

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") 

を私は知りません。 おかげ

+1

の「編集」からです、それはあなたの端末であるとして、それが行われていません。 –

+0

これは、提供されたよりも多くの入力行を読み込もうとしたことを意味します。入力の説明、または問題へのリンクを教えてください。 –

+0

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

答えて

0
私は intを取るように設計されています一方、あなたは正確にあなたのコードを達成しようとしているが、あなたは原因入力として文字列を取るしようとしたライン inp=input()にエラーを取得しているかわからない

floatまたはstring entered with quotespython 2.7に設定します。代わりにraw_input()を使用して、完全な行を文字列入力として取り出し、spaceを区切り文字として分割します。

私はあなたが提供したリンクに従いました。特定の質問はdictionariesを使用して解決する必要があることがわかりました。したがって、namenumberを追加する代わりにdictionarykey-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" 

+0

ありがとう! –

+0

問題はありません。回答を受け入れたものとしてマークしてください。 @YajurTayal – Jarvis

0

HackerRankでコード化した場合、同様のEOF問題が発生しました。

  1. のpython3で使用input()とPython2でraw_input():実際には、2つの問題があります。
  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') 
関連する問題