EOF Error in python Hackerrank

imshashi17 picture imshashi17 · Mar 28, 2017 · Viewed 22.3k times · Source

Trying to solve a problem but the compiler of Hackerrank keeps on throwing error EOFError while parsing: dont know where is m i wrong.

#!usr/bin/python

b=[]
b=raw_input().split()
c=[]
d=[]
a=raw_input()
c=a.split()
f=b[1]
l=int(b[1])
if(len(c)==int(b[0])):          
    for i in range(l,len(c)):
        d.append(c[i])
        #print c[i]
    for i in range(int(f)):
        d.append(c[i])
        #print c[i]
for j in range(len(d)):
    print d[j],

i also tried try catch to solve it but then getting no input.

try:
    a=input()
    c=a.split()
except(EOFError):
    a=""

input format is 2 spaced integers at beginning and then the array

the traceback error is:

Traceback (most recent call last):
  File "solution.py", line 4, in <module>
    b=raw_input().split()
EOFError: EOF when reading a line

Answer

Yuchao Jiang picture Yuchao Jiang · Aug 1, 2017

There are several ways to handle the EOF error.

1.throw an exception:

while True:
  try:
    value = raw_input()
    do_stuff(value) # next line was found 
  except (EOFError):
    break #end of file reached

2.check input content:

while True:
  value = raw_input()
  if (value != ""):
    do_stuff(value) # next line was found 
  else:
    break 

3. use sys.stdin.readlines() to convert them into a list, and then use a for-each loop. More detailed explanation is Why does standard input() cause an EOF error

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