如何解决我在本地计算机上的代码运行正常时,我在黑客排名引擎中遇到了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")
您的逻辑是错误的。由于输入是一行输入,而您是两行输入而不是一行