我在本地计算机上的代码运行正常时,我在黑客排名引擎中遇到了EOF错误

问题描述

在其上运行python3时,我在Hacker rank引擎中遇到此错误。

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

我的代码是这个

phonebook = {}
total_entries = int(input("Total number of entries: "))
if 1 <= total_entries <= 10 ** 5:
    print("Enter names and number separated by space:")
    for entries in range(0,total_entries):
        items = input("Enter here:")
        items = items.split(" ")
        phonebook[items[0]] = int(items[1])
queries = []
while True:
    queries.append(input("Enter name to be searched:"))
    k = queries[-1]
    if not k:
        break
if 1 <= len(queries) <= 10 ** 5:
    for query in queries:
        if query == '':
            exit(0)
        elif query in phonebook.keys():
            print(f"{query}={phonebook.get(query)}")
        else:
            print("Not found")

如果您需要以下情况,则指向问题的链接为:Question Link

代码在我的本地计算机上运行良好。我不知道为什么会出现这样的错误。请提出我的建议!

解决方法

您阅读输入的方式是错误的。

您的代码假定每个姓名和号码对都是在单独的行中输入的,情况并非如此。

例如,您需要一次input(),然后使用input,而不是在获取姓名和电话号码时呼叫split

name,number = input().split()
,

根据HackerRank问题,在输入n行之后,会有一些“随机”行输入。因此,您不知道输入何时结束。因此,您将收到“ EOF错误”。一种方法是使用stdin,如下所示:

from sys import stdin

phone={}
n=int(input())
for i in range(0,n):
    name=input()
    phone[name]=input()
for i in stdin:
    name=input()
    re=phone.get(name,"none")
    if re!="none":        
        print("%s=%s"%(name,re))
    else:
        print("Not found")

您的逻辑是错误的。由于输入是一行输入,而您是两行输入而不是一行

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...