Python实现员工ID查姓名:CSV处理代码问题咨询
解决CSV员工ID查询对应姓名的问题
原代码存在的问题
- 缩进错误:
if语句不在for循环块内,循环结束后才会执行匹配,只能检查最后一行的ID - 逻辑漏洞:每次循环覆盖变量
b的值,无法遍历所有员工ID做匹配 - 功能缺失:没有读取和输出匹配到的员工姓名
- 文件操作不规范:未手动关闭文件,存在资源泄漏风险
- 提示错误:输入提示要求输入邮编后三位,和实际需求(输入员工ID)不符
修正后的代码
import csv # 用with语句自动管理文件,无需手动关闭 with open("id.csv", 'r', newline='') as fileo: # 确保CSV表头是'id'和'name',如果你的表头不同请替换成实际名称 reader = csv.DictReader(fileo) target_id = input("请输入员工ID:") # 根据需求补全ID格式,比如前导加6个零 formatted_id = "000000" + target_id is_found = False for row in reader: if row['id'] == formatted_id: print(f"找到员工:姓名为 {row['name']}") is_found = True break # 找到后直接退出循环,不用继续遍历 if not is_found: print("未找到该ID对应的员工")
关键改动说明
- 文件管理:使用
with语句打开文件,Python会在代码块结束后自动关闭文件,避免资源浪费 - 缩进修正:把ID匹配的
if语句放到for循环内部,实现逐行检查每一个员工ID - 功能补全:读取每行的
name字段,匹配成功后直接输出员工姓名 - 状态标记:添加
is_found变量处理未找到匹配ID的情况,给用户明确反馈 - 效率优化:匹配成功后用
break终止循环,不用遍历剩余数据
内容的提问来源于stack exchange,提问作者Doomsday
相关产品推荐
相关产品推荐

