Python Zybooks LAB 9.6:联系人列表代码遇IndexError求助
问题排查与解决方案
错误根源:你的代码把分割后的每个完整联系人项(如
Frank,867-5309)和输入的姓名Frank直接比较,永远无法匹配,循环会执行完所有元素。此时i的值是列表最后一个元素的索引(示例中为2),i+1等于3,超出了列表的索引范围(列表仅含3个元素,索引为0-2),因此触发IndexError: list index out of range。修正思路:每个联系人项是
姓名,号码的格式,需要将每个项按逗号再次分割,提取出姓名部分与输入的name对比,匹配成功后直接输出对应的号码,无需依赖索引i+1,从根源避免越界问题。修正后的代码:
s = input() name = input() contacts = s.split(" ") for contact in contacts: # 拆分每个联系人的姓名和号码 name_part, number_part = contact.split(",") if name_part == name: print(number_part) break
- 进阶优化方案:可以先将联系人信息转换为字典,实现更高效的查询:
s = input() name = input() # 构建姓名到号码的映射字典 contact_map = {} for item in s.split(" "): contact_name, contact_num = item.split(",") contact_map[contact_name] = contact_num # 通过姓名直接获取号码,还能处理联系人不存在的情况 print(contact_map.get(name, "未找到该联系人"))
内容的提问来源于stack exchange,提问作者dglr007
相关产品推荐
相关产品推荐

