01/10/2018, 09:10
Giúp fix lỗi tính tich của 2 ma trận
mình đang lập trình để tính tich của 2 ma trận nhưng chạy bị lỗi, mình không biết sai ở đâu, mong mọi người giải đáp
import math
i=int(raw_input('so hang ma tran a'))
j=int(raw_input('so cot ma tran a'))
m=int(raw_input('so hang ma tran b'))
n=int(raw_input('so cot ma tran b'))
if j<>m:
print 'error'
else:
A= range(1,i+1)
B=range(1,m+1)
C=A
for k in range(1,i+1):
A[k-1]=range(1,j+1)
C[k-1]=range(1,n+1)
for x in range(1,j+1):
A[k-1][x-1]=int(raw_input("nhap so thu A%r%r la:"%(k,x)))
for k in range(1,j+1):
B[k-1]=range(1,n+1)
for x in range(1,n+1):
B[k-1][x-1]=int(raw_input('nhap so thu B%r%r la:'%(k,x)))
for x in range(0,i):
for y in range (0,n):
for k in range (0,j):
C[x][y]+=A[x][k]*B[k][y]
if k==j-1:
break
for c in C:
print c
Bài liên quan
line 6:
if i<>m
Python đâu có
<>
đâu bạn, thay bằng!=
line :13,14,15:
Sao có cái thụt lề kì vậy, chỉ được thụt đồng loạt bằng 1 kiểu thôi nhé
mình vẫn chạy được nhưng chạy không đúng :(. mình mới học nên ngồi tự mò làm
C=A -> C với A đang xài chung 1 list
Cứ tưởng tượng h bạn đang xài chung 1 khoảng tiền w ai đó, thì 1 trong 2 người xài -> khoảng tiền chung đó đều bị thay đổi.
Thì C với A nó cũng xài chung như trên -> C thay đổi sẽ ít nhiều dẫn tới A theo đổi theo.(trừ khi gán C bằng cái khác)
->
C[k-1] = range(1, n+1)
tương đương
A[k-1] = range(1, n+1)
-> bị lỗiNói chung bạn nên tìm hiểu kỹ hơn về khái niệm con trỏ
Cách sửa rất đơn giản, bạn chỉ cần gán
C = range(1,i+1)
thay vìC = A
Và có vẻ như kq bị sai o-o
Do đâu thì do bạn chưa khởi tạo các tất cả giá trị trong ma trận C về 0.
thank bạn nha. mình đã sửa nhưng khi chạy chỉ đúng dc 1 cột đầu, các cột tiếp theo tăng thêm 1 đơn vị mà mình k hiểu sao?
20 ký tự. 20 20 20 20