Python 列表索引超出范围矩阵计算器

Python 列表索引超出范围矩阵计算器,python,indexoutofboundsexception,Python,Indexoutofboundsexception,我正在学习hyperskill python开发人员课程。我必须制作一个矩阵计算程序,只使用python基础知识,而不使用numpy、pandas等。 我不知道我的代码出了什么问题。我得到了这个错误: exception in test #9 Traceback (most recent call last): File "processor.py", line 89, in <module> a += main[i][k] * main2[k][j] IndexErr

我正在学习hyperskill python开发人员课程。我必须制作一个矩阵计算程序,只使用python基础知识,而不使用numpy、pandas等。 我不知道我的代码出了什么问题。我得到了这个错误:

exception in test #9

Traceback (most recent call last):
  File "processor.py", line 89, in <module>
    a += main[i][k] * main2[k][j]
IndexError: list index out of range
谢谢你的帮助! 附笔。 “看起来您的帖子大部分是代码,请添加更多详细信息。”我想我为这个问题提供了足够的详细信息。

所以我尝试了以下方法:

  • 选择:3
  • 第一个矩阵:大小1x1和值[1]
  • 第二个矩阵:大小1x1和值[1]
它成功了,然后我尝试了while循环的第二次迭代:

  • 选择:3
  • 第一个矩阵:大小2x2和值[[2,2],[2,2]]
  • 第二个矩阵:大小2x2和值[[2,2],[2,2]]
我得到了你列出的错误

我注意到您一直在向main和main2追加内容,但从未重置它们。因此,当它到达for循环时,它将访问我以前使用的矩阵的值(在我的例子中是[1.0]),这将在第二次while循环迭代中提高索引器,因为它期望一个长度为2([2.0,2.0])的列表,但得到一个长度为1([1.0])的列表

为了解决这个问题,我想补充一点

main = []
main2 = []
final = [[]]
mat = []

在while循环中,每次运行while循环时都要重置它。

您能在这个错误中包含您试图乘以的矩阵的具体大小吗?您的代码有很多问题:1)它不检查输入的矩阵是否符合指定的大小(即,我可以指定一个大小为2x1的矩阵,并输入一个2x2的矩阵而不出错)2)它不检查矩阵乘法是否可行(检查矩阵乘法规则)3)它不检查缺少的条目(这被解读为“无”,结果是一个空白回复)谢谢你的帮助!有人在下面写下了答案已经帮了我!祝你有一天过得愉快:)哇,这是真的。谢谢!:)祝您今天过得愉快!
main = []
main2 = []
final = [[]]
mat = []