You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:25:14