我正在学习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
这就是我所拥有的,我认为没关系:
main = []
main2 = []
final = [[]]
mat = []
while True:
print("""1. Add matrices
2. Multiply matrix by a constant
3. Multiply matrices
0. Exit""")
print("Your choice:")
choice = int(input())
if choice == 1:
print("Enter size of first matrix:")
rows, columns = input().split()
rows, columns = int(rows), int(columns)
print("Enter first matrix:")
for i in range(rows):
mat = input().split()
mat = list(map(float, mat))
main.append(mat)
print("Enter size of second matrix:")
rows2, columns2 = input().split()
rows2, columns2 = int(rows2), int(columns2)
print("Enter second matrix:")
for i in range(rows2):
mat = input().split()
mat = list(map(float, mat))
main2.append(mat)
print("The result is:")
if rows == rows2 and columns == columns2:
for i in range(rows):
for j in range(columns):
a = str(main[i][j] + main2[i][j])
final.insert(i, a)
print(final[i], end=' ')
print()
else:
print('ERROR')
print()
continue
if choice == 2:
print("Enter size of first matrix:")
rows, columns = input().split()
rows = int(rows)
columns = int(columns)
print("Enter matrix:")
for i in range(rows):
mat = input().split()
mat = list(map(float, mat))
main.append(mat)
print("Enter constant:")
constant = int(input())
print("The result is:")
if rows == rows and columns == columns:
for i in range(rows):
for j in range(columns):
a = str(constant * main[i][j])
final.insert(i, a)
print(final[i], end=' ')
print()
else:
print('ERROR')
print()
continue
if choice == 3:
print("Enter size of first matrix:")
rows, columns = input().split()
rows, columns = int(rows), int(columns)
print("Enter first matrix:")
for i in range(rows):
mat = input().split()
mat = list(map(float, mat))
main.append(mat)
print("Enter size of second matrix:")
rows2, columns2 = input().split()
rows2, columns2 = int(rows2), int(columns2)
print("Enter second matrix:")
for i in range(rows2):
mat = input().split()
mat = list(map(float, mat))
main2.append(mat)
print("The result is:")
if columns == rows2:
for i in range(rows):
for j in range(columns2):
a = 0
for k in range(rows2):
a += main[i][k] * main2[k][j]
final.insert(i, str(a))
print(final[i], end=' ')
print()
print()
continue
if choice == 0:
break
谢谢你的帮助! 附笔。 “看起来你的帖子大部分是代码,请添加更多细节。”我想我已经为这个问题提供了足够的细节
所以我试了一下:
它成功了,然后我尝试了while循环的第二次迭代:
我得到了你列出的错误
我注意到您一直在向main和main2追加内容,但从未重置它们。因此,当它到达for循环时,它将访问我以前使用的矩阵的值(在我的例子中是[1.0]),这将在第二次while循环迭代中提高索引器,因为它期望一个长度为2([2.0,2.0])的列表,但得到一个长度为1([1.0])的列表
为了解决这个问题,我想补充一点
在while循环中,每次运行while循环时都将其重置
相关问题 更多 >
编程相关推荐