
本文详解如何从字典中读取用户输入的房间号,输出对应客人姓名,并**一次性删除该键值对**,避免重复输入导致逻辑错误。重点解决因两次调用 `input()` 引起的键缺失与删除失败问题。
在 Zybooks 的 Python 挑战活动 3.5.1 中,目标是操作一个表示酒店房客关系的字典 room_guest_pairs:根据用户输入的房间号(整数键),查出客人姓名、打印后立即从字典中移除该条记录,最后输出剩余键值对。
你最初的代码存在一个关键缺陷:
name = room_guest_pairs[int(input())] # 第一次 input() —— 成功读取并查值 print(name) room_guest_pairs.pop(int(input())) # 第二次 input() —— 再次等待输入!用户需重复输入同一房间号
这不仅造成交互不友好,更严重的是:若用户第二次输错(如多打空格、输错数字),pop() 会抛出 KeyError;即使输入正确,也违背了“读一次、用多次”的基本编程原则。
✅ 正确做法是:只调用一次 input(),将其转换为整数后保存到变量中,后续统一使用该变量进行查询和删除。推荐使用 del 语句(语义清晰)或 pop()(可选返回值),但务必复用同一键:
立即学习“Python免费学习笔记(深入)”;
传媒企业网站系统使用热腾CMS(RTCMS),根据网站板块定制的栏目,如果修改栏目,需要修改模板相应的标签。站点内容均可在后台网站基本设置中添加。全站可生成HTML,安装默认动态浏览。并可以独立设置SEO标题、关键字、描述信息。源码包中带有少量测试数据,安装时可选择演示安装或全新安装。如果全新安装,后台内容充实后,首页才能完全显示出来。(全新安装后可以删除演示数据用到的图片,目录在https://
room_guest_pairs = {339: 'Sue', 238: 'Eli'}
# ✅ 步骤1:读取一次房间号,并转为整数
room_number = int(input())
# ✅ 步骤2:根据房间号获取并打印客人姓名
print(room_guest_pairs[room_number])
# ✅ 步骤3:使用同一 room_number 删除该键值对
del room_guest_pairs[room_number]
# ✅ 步骤4:输出剩余字典内容
print('Remaining pairs:')
print(room_guest_pairs)⚠️ 注意事项:
- 输入必须为有效整数,否则 int(input()) 会触发 ValueError。本题默认输入合法,但在实际项目中建议添加 try-except 处理异常;
- 不要对不存在的键执行 del 或 pop(),否则报错。如需健壮性,可先用 if room_number in room_guest_pairs: 判断;
- pop(key) 和 del dict[key] 功能等价(均删除指定键),但 pop() 可返回被删值(如 guest = room_guest_pairs.pop(room_number)),而 del 更简洁明确。
运行示例:
输入:238
输出:
Eli
Remaining pairs:
{339: 'Sue'}至此,字典精准完成“查—显—删”三步操作,逻辑清晰、高效可靠。









