python - Hackerrank 第 8 天:字典和地图问题(使用 Python)
问题描述
目标
今天,我们正在学习使用 Map 或 Dictionary 数据结构的键值对映射。查看教程选项卡以获取学习材料和教学视频!
任务
给定姓名和电话号码,组装一个电话簿,将朋友的姓名映射到他们各自的电话号码。然后,您将获得未知数量的姓名来查询您的电话簿。对于每个查询,将电话簿中的相关条目以 name=phoneNumber 形式打印在新行上;如果找不到条目,则打印 Not found 代替。
注意:您的电话簿应该是 Dictionary/Map/HashMap 数据结构。
输入格式
第一行包含一个整数,表示电话簿中的条目数。随后的每一行都以单行上的空格分隔值的形式描述了一个条目。第一个值是朋友的名字,第二个值是一个数字电话号码。
在电话簿条目的行之后,有未知数量的查询行。每行(查询)包含一个要查找的内容,您必须继续阅读行,直到没有更多输入。
注意:名称由小写英文字母组成,仅是名字。
输出格式
每次查询换行,如果姓名在电话簿中没有对应条目,则打印 Not found;否则,以 name=phoneNumber 的格式打印完整信息。
样本输入
3
sam 99912222
tom 11122222
harry 12299933
sam
edward
harry
样本输出
sam=99912222
Not found
harry=12299933
我的代码:
# No. of dictionary inputs
n = int(input())
# Code to fill the phonebook with entries
phonebook = {}
for _ in range(1, n+1):
entry = input().split(" ")
phonebook[entry[0]] = entry[1]
# Code for query intake
queries = []
while(1):
queries.append(input())
#need to figure out when the user stops input and need to break this loop then
if (input() == ""):
break
# Code for query result
for i in range(0, len(queries)):
if(queries[i] in phonebook):
print(queries[i] + "=" + phonebook[queries[i]])
# print(f"{queries[i]}={phonebook[queries[i]]}")
else:
print("Not found")
我面临的问题: 当我运行代码时,我输入了示例输入,直到最后一切都运行良好,但是,在打印出结果时,查询“edward”没有得到输出。“edward”的期望输出将是“Not Found”,但是,每个偶数输入都会丢失,可能是由于 while 循环中的 if 语句。
解决方案
while(1): queries.append(input()) #need to figure out when the user stops input and need to break this loop then if (input() == ""): break
应该input()
只使用一次,然后是append()
or break
:
while True:
line = input()
if line == "":
break
queries.append(line)
推荐阅读
- json - 如何在 powershell 中获取 azure arm 模板的解释值(ex concat)
- javascript - MapKit.js 中的缩放和位置管理
- javascript - 为什么在 angularjs 指令链接函数中未定义双向绑定?
- java - 运行 ant 在 mac 上安装 netbeans:Buildfile:build.xml 不存在!构建失败
- c# - Azure Functions,如何拥有多个 .json 配置文件
- tensorflow - 使用 TensorFlow2 的分布式学习不起作用
- angular - 在我的选择使用函数的地方为 mat-select 设置默认值?
- javascript - 下载文本文件并将文本作为字符串分配给变量 - Angular 7
- chart.js - Chart.js x轴标签在悬停时重复
- bash - 根据字符串中的 ID 删除重复的行