繁体   English   中英

为什么我在此程序中收到“列表索引超出范围”错误?

[英]Why am I recieving a 'list index out of range' error in this program?

我是一名对编码相对较新的学生,在 GCSE 级别使用 Python,我正在努力找出这段代码哪里出了问题,用于通过调整系数来纠正不同学生的分数。 当两个列表中的项目数相同时,为什么我会收到错误消息?

wrongMark = [72,75,23,54,48]
adFactor = [1.25,1.1,1.8,1.3,0.9]
newMark = []
examTable = [["Doc","Sarah","Jar-Jar","Jake","Ben"],
             wrongMark,
             adFactor
             ]
#print(examTable)

for item in wrongMark:
    results = item*adFactor[item]
    newMark.append(results)
print(newMark)

在 for 循环中放入一行print(item)您会看到它是 wrongMark 中的值,而不是索引。 你可能想要

For index in range(len(wrongMark)):

错误是您使用for item in wrongMark 在第一次迭代中,循环将分配值为 75 的项目,而列表adFactor没有 75 个项目;)

解决此问题的一种方法是将循环更改为:

for item in range(len(wrongMark)):
    results = wrongMark[item]*adFactor[item]
    newMark.append(results)

问题在这一行:

   results = item*adFactor[item]

对于 for 循环的第一次迭代,您尝试访问列表 adFactor 中的第 72 个单元格。

这就是为什么你得到“列表索引超出范围”的原因

您需要在迭代时使用索引。 您在第一次迭代中使用的值为 72。 这就是为什么它超出范围错误。 使用类似:for idx in range(len(wrongMark)): results = wrongMark[idx]*adFactor[idx] newMark.append(results)

错误在代码中:results = item*adFactor[item] 当您将循环的第一次迭代想象为:result = 72 * adFactor[72] 时,您会更容易注意到错误,因为列表 adFactor 没有第 72 项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM