没有人能弄清楚为什么我在Python Hackerrank 30 Days of Challenge中进行此练习的代码未通过测试用例1吗?
这里是挑战:
目标今天,我们正在学习使用Map或Dictionary数据结构的键-值对映射。请查看“教程”选项卡,以获取学习材料和教学视频!
任务给定名字和电话号码,组装电话簿,将朋友的名字映射到他们各自的电话号码。然后,将为您提供未知数量的名称,以查询电话簿。对于每个查询,将电话簿中的相关条目以名称= phoneNumber的形式换行打印;如果找不到的条目,则打印“找不到”。
注意:您的电话簿应为Dictionary / Map / HashMap数据结构。
输入格式
第一行包含一个整数,表示电话簿中的条目数。随后的每一行在一行上以空格分隔的形式描述一个条目。第一个值是朋友的名字,第二个值是数字电话号码。
在电话簿条目行之后,存在未知数量的查询行。每行(查询)都包含一个要查询的内容,您必须继续阅读各行,直到没有更多输入为止。
注:名称由小写英文字母组成,仅是名字。
输出格式
在每个查询的新行中,如果该名称在电话簿中没有对应的条目,则打印Not Found;否则,打印完整的文件,格式为name = phoneNumber。
这是我的代码:
n = int(input())
phone_book = {}
for i in range(n):
name, phone_num = map(str,input().split())
name = name.lower()
phone_book[name] = phone_num
queries = 0
while queries in range(n):
query = input().lower()
if query in phone_book:
print(query + "=" + phone_book.get(query))
else:
print("Not found")
queries += 1
对于此测试用例1:
100000
unayklejwm 53561825
ahiff 57272140
frlrecdfxo 28001354
aeccxyrbek 21112785
mlgdk 12405837
iyiyycfngr 23841264
subnwvrqdp 77688226
vhypdqfbdy 67846211
lcnbh 86026675
lxbjpmuhis 85475547
enfifbprov 20172436
hnjctgslxf 18125412
slfoglbvah 47530087
mpsrcmrkon 44365224
jnpslqvlkx 88071512
liwyjbsfkk 50646067
kyrkhaikuf 18535535
ubvfx 43551151
krger 80787433{-truncated-}
我得到的错误不是事实,它是错误的输出,而是这个:
编译器消息:
Runtime Error
预期输出
Not found
ipwpabdefa=14170412
Not found
toykmviqbo=11872347
mooetebtqt=70658483
fbubawkkhq=10613664
Not found
ejqxn=77321147
Not found
Not found
Not found
Not found
xgfpx=58118174
Not found
odacddldrk=73267266
Not found
iakxugylkc=41875647
Not found
djtelththc=20278224
Not found{-truncated-}
这仅在第一个测试用例中发生,而其他情况则成功通过。
编辑:我只是再次运行了所有测试用例,这次我根据结果通过了所有测试用例。但是,即使我通过了所有测试用例,我仍然会遇到运行时错误。它给了我这个:
Runtime Error :(
是否有此错误弹出的原因?我应该如何修正我的代码?
任何建议都值得赞赏。
尝试一下
N=int(input())
d={}
for i in range(N):
entry=input().split()
d[entry[0]]=entry[1]
ans=[]
try:
while(1):
new=str(input())
if(new in d.keys()):
ans.append(new+"="+str(d[new]))
else:
ans.append('Not found')
except(EOFError):
pass
for a in ans:
print(a)
while(1)循环解决了连续运行的问题,tryexcept块将有助于终止流程。