【问题标题】:Why am I recieving a 'list index out of range' error in this program?为什么我在此程序中收到“列表索引超出范围”错误?
【发布时间】:2020-03-01 00:56:22
【问题描述】:

我是一个相对较新的编码学生,在 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)

【问题讨论】:

    标签: python list iteration


    【解决方案1】:

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

    For index in range(len(wrongMark)):
    

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        问题出在这一行:

           results = item*adFactor[item]
        

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

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

        【讨论】:

          【解决方案4】:

          错误在代码中:results = item*adFactor[item] 当您将循环的第一次迭代想象为:result = 72 * adFactor[72] 时,更容易注意到错误 由于列表 adFactor 没有第 72 个术语,您会收到超出索引的错误。

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 2020-10-11
              • 1970-01-01
              • 1970-01-01
              • 2023-02-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-04-10
              相关资源
              最近更新 更多