编号与配对是两个不同需求
遍历一组名称并显示序号时,可以考虑 enumerate;把两组一一对应的数据放到同一个循环里时,可以考虑 zip。先决定题目需要的是位置、元素还是两组元素的关系,再选择工具。反复修改 range(len(...)) 往往是在修表面下标,而没有检查数据是否真的对齐。
原创例题:为什么第三个模块没出现
设 names=['统计','经济','编程'],scores=[62,71]。list(zip(names,scores)) 只有 [('统计',62),('经济',71)];默认 zip 在较短输入结束时停止,不会自动补齐第三项。这个结果不能被解释成编程成绩为零,实际情况是缺少配对数据。
显示从一开始的列表编号,可以使用 list(enumerate(names,start=1)),输出 (1,'统计')、(2,'经济')、(3,'编程')。start 改变的是计数值,不是对原列表进行切片,也不会跳过第一个模块。
把不完整数据变成明确的检查
在支持该参数的 Python 版本中,zip(names,scores,strict=True) 会在迭代发现长度不一致时抛出 ValueError。注意它返回迭代器,错误可能在消费结果时才出现。也可以先明确检查两个列表长度,并决定缺失数据应如何处理;不要未经定义就填零。
用可预测输出检验理解
先补上第三个成绩 58,手写三对预期结果,再执行循环。随后交换两个名称的位置,观察成绩对应关系也随之变化。编程辅导应帮助你解释数据关系和失败条件;仅让代码不报错,并不代表数据配对正确。
参考资料
下一步
需要中文大学课程辅导,可向阿尔比恩启航学院说明课程名称、卡住的步骤、已有尝试和学习目标。预约前确认学科适配、导师时间、费用及院校允许的帮助范围。例题用于独立练习,正式计分成果由学生本人完成。
