【发布时间】:2017-06-12 09:14:23
【问题描述】:
剧透这个问题是关于 Hackerrank Day 8 挑战的,如果你想先自己尝试一下。
这是他们提出的问题:
给定 n 个姓名和电话号码,组装一个电话簿来映射 朋友的名字到他们各自的电话号码。然后你会 给定未知数量的姓名来查询您的电话簿。为了 每个 name 查询,从您的电话簿打印相关条目 以 name=phoneNumber 形式在新行上;如果一个条目不是 找到,打印 Not found 代替。
注意:您的电话簿应该是 Dictionary/Map/HashMap 数据 结构。
第一行包含一个整数,n,表示 电话簿中的条目。 n 行中的每一行都描述了 单行上以 2 个空格分隔的值形式的条目。这 第一个值是朋友的名字,第二个值是 8 位数字 电话号码。
在电话簿条目的 n 行之后,有一个未知号码 查询行数。每行(查询)包含要查找的 name 一个, 你必须继续阅读行,直到没有更多的输入。
注意:名称由小写英文字母组成,并且是 仅限名字。
然后他们进一步提供输入:
3
sam 99912222
tom 11122222
harry 12299933
sam
edward
harry
期望输出:
sam=99912222
Not found
harry=12299933
我无法查询未知数量的名称。我尝试使用 try/except 块在 EOFError 处停止,但我一直在他们的测试用例 1、2 和 3 上超时。它适用于其他两个测试用例,但不适用于那些,我认为这一定是因为我被卡住了在一种无限循环中使用我的 while True 语句?这是我写的:
phonebook = {}
entries = int(raw_input())
for n in range(entries):
name, num = raw_input().strip().split(' ')
name, num = [str(name), int(num)]
phonebook[name] = num
while True:
try:
search = str(raw_input())
if search in phonebook.keys():
output = ''.join('%s=%r' % (search, phonebook[search]))
print output
else:
print "Not found"
except EOFError:
break
我对 python 还是很陌生,所以也许我没有正确使用 try/except 或 break 方法?如果有人能告诉我哪里出了问题或者我可以做些什么来改进我的代码,我将不胜感激?
【问题讨论】:
-
只是出于兴趣:你能链接到挑战吗?我真的很想自己解决这个问题。 :)
-
@MSeifert Hackerrank Day 8 如果你能解决它,你介意告诉我怎么解决吗?