2016-11-27 5 views
0

코드에서 다음 문제가 발생했을 때 HackerRank에서 문제를 해결하고있었습니다. 내 파이썬 (2.7.10) IDLE에서 테스트 해 보았지만 정상적으로 작동하고있었습니다. 그러나 HackerRank에 다음과 같은 오류를 보여 주었다 :표준 입력()이 EOF 오류를 일으키는 이유

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 엔진에서 온 이유를 모르겠어요 :

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

나는 다음과 같은 코드를 입력. 감사

+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을 추가하는 대신 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 루프를 사용하여 각 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') 
관련 문제