Pythonで(Numpyとか使わずに)行列積の計算をしてみる

Python習いたての大学生がやりたがりそうなこと、第4位「行列計算」。一応、自力で書いてみました。
行列A,Bを二次元リストとして、その行列積を計算します。行列積が定義できないときにはその旨を表示、定数×行列 の計算もできるようにしています。
きっと色々がばがばなので....改善したら適宜編集します。rangeの書き方これじゃなくていいですね
A,Bが行列じゃないときに警告文を出すようにしたいのですが、どうすりゃいいかなあ。
ご指摘等ありましたら優しく@aagoon545まで。

A=[[1 for i in range(3)] for j in range(2)]
B=[[1 for k in range(4)] for l in range(3)]

line_A = len(A)
raw_A = len(A[0])
line_B = len(B)
raw_B = len(B[0])

print("A is (" + str(line_A) + "," + str(raw_A) +") matrix." )
print("B is (" + str(line_B) + "," + str(raw_B) +") matrix." )

#そもそもAが行列でないとき
#そもそもBが行列でないとき

#Aが1*1行列の時
if line_A == 1 and raw_A == 1 :
    AB = []
    for i in range(0 , line_B ):
        line_AB_i = []
        for j in range(0 , raw_B ):
            AB_ij = 0
            AB_ij = A[0][0]*B[i][j]
            #print(AB_ij)
            line_AB_i.append(AB_ij)
        AB.append(line_AB_i)
    print(AB)
        
#演算が定義できないとき
elif raw_A != line_B:
    print("This calculation is not defined!!")

#普通に計算できるとき
else:
    AB = []
    for i in range(0 , line_A ):
        line_AB_i = []
        for j in range(0 , raw_B ):
            AB_ij = 0
            for k in range(0 , raw_A ):
                AB_ij = A[i][k]*B[k][j] + AB_ij
            #print(AB_ij)
            line_AB_i.append(AB_ij)
        AB.append(line_AB_i)
    print(AB)