Python EOFError for value in dictionary



长期潜伏,第一次张贴。测试用例返回country_name = input()行的回溯EOFError。

Traceback (most recent call last):
File “/usercode/file0.py”, line 16 in <module> 
country_name = input()
EOFError: EOF when reading a line

没什么特别的,代码根据用户输入("country_name")获取字典("data")中的键值。我已经尝试在多个ide中运行,它对我来说很好,重新定义,尝试str(input())等。

data = {
'Singapore': 1,
'Ireland': 6,
'United Kingdom': 7,
'Germany': 27,
'Armenia': 34,
'United States': 17,
'Canada': 9,
'Italy': 74
}

for key, value in data.items():
print(key, value)

while True:
country_name = input()

if country_name in data.keys():
print("The economic rank is: ", data[country_name])
else:
print('Not found')

已更新,每个评论/答案的改进:

data = {
'Singapore': 1,
'Ireland': 6,
'United Kingdom': 7,
'Germany': 27,
'Armenia': 34,
'United States': 17,
'Canada': 9,
'Italy': 74
}
for key, value in data.items():
print(key,value)
try:
while True:
country_name = input("Enter a country: ")
if country_name in data.keys():
print(f"The economic rank of {country_name} is {data[country_name]}.", flush=True)
exit()
else:
print("Country not found.")
except EOFError:
pass

更新:结果是测试用例没有通过,因为测试用例编写得如此严格,以至于它们期望使用get()方法。一旦这些被删除,测试用例通过后,我添加了一个出口,每个修改的代码(上面),每个下面的注释。

如果测试用例命中EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return),这将引发EOFError。当我执行Cmd+D时,我可以创建相同的错误

测试用例可能以类似的方式退出。

你能不能把它包装在try-catch中,然后忽略EOFError,如下所示:

try:
while True:
country_name = input()
if country_name in data.keys():
print("The economic rank is: ", data[country_name])
else:
print('Not found')
except:
pass

最新更新