![](/img/trans.png)
[英]why am i getting this List index out of range error in my Quick sort program?
[英]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.