Так как мы можем видеть на картинках выше, несмотря на то, что выпустив ожидаемый выход, наш тестовый случай не удается из-за ошибки времени выполнения EOFERROR I.e., Конец ошибки файла Отказ Давайте понять, что такое EOF и как ее решать.
Что такое EOFERROR.
В Python EoFError является исключением, которое повышается при таких функциях, как вход () или RAW_INPUT () в случае возвращаемого файла Python2 (EOF) без чтения какого-либо ввода.
Когда мы можем ожидать EofError
Мы можем ожидать, что EOF в некоторых случаях, которые должны иметь дело с входом ()/RAW_INPUT (), такими как:
Код прерывания в выполнении Использование
Ctrl + D.
Когда входное оператор выполняется, как показано нижеДругим возможным случаем встречи с EOF, когда мы хотим взять некоторые Количество входов от пользователя I.E. мы не знаем точное количество входов; Следовательно, мы запускаем бесконечную петлю для принятия входов, как показано ниже, и получите ошибку трассировки на самом последней итерации нашей бесконечной петли, потому что пользователь не дает никакого ввода в этой итерации
n=int(input()) if(n>=1 and n<=10**5): phone_book={} for i in range(n): feed=input() phone_book[feed.split()[0]]=feed.split()[1] while True: name=input() if name in phone_book.keys(): print(name,end="") print("=",end="") print(phone_book[name]) else: print("Not found")
Код выше дает EOFERROR, потому что входное утверждение внутри в то время как
петля поднимает исключение при последней итерации
Не волнуйтесь, если вы не понимаете код или не получаете контекст кода, это просто решение одного из проблем с заявлениями о HackErrank 30 дней кодовой проблемы, который вы можете захотеть Проверьте Важная часть здесь есть, что я использовал бесконечный цикл, чтобы принять вход, который дал мне ошибку выполнения.
Как решать EofError
Мы можем ловить EOFERROR как любую другую ошибку, используя Try-Blocks, как показано ниже:
try: input("Please enter something") except: print("EOF")
Возможно, вы захотите сделать что-то еще вместо того, чтобы просто печатать «EOF» на консоли, такой как:
n=int(input()) if(n>=1 and n<=10**5): phone_book={} for i in range(n): feed=input() phone_book[feed.split()[0]]=feed.split()[1] while True: try: name=input() except EOFError: break if name in phone_book.keys(): print(name,end="") print("=",end="") print(phone_book[name]) else: print("Not found")
В вышеупомянутый код Python выходит из цикла, если она сталкивается с EofError, и мы проходим наш тестовый случай, проблема, благодаря которой началась эта дискуссия …
Надеюсь, что это полезно, если вы знаете какие-либо другие случаи, когда мы можем ожидать, что EOFERROR, вы можете подумать о комментировании их ниже.
Оригинал: “https://dev.to/rajpansuriya/eoferror-eof-when-reading-a-line-12fe”