Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Ejercicios => Mensaje iniciado por: Itzhack en 25 Septiembre 2014, 19:21 PM

Título: Ayuda: Multiplicación de matrices - Python
Publicado por: Itzhack en 25 Septiembre 2014, 19:21 PM
Hola todo el mundo! Estoy tratando de programar una multiplicación de dos matrices, que antes debe validar si las dos matrices son validas (matrices completas) y validar si las dos matrices se pueden multiplicar(requisito que el número de columnas de la Matriz 1 sea igual al numero de filas de la matriz 2), por el momento llegué a esto, pero obtengo el error abajo descrito:
-------------------------------------------------------------------------------------------------------------
A = [[1, 2], [3, 4]]           # matriz 2x2
B = [[1, 2, 3], [4, 5, 6]]   # matriz 2x3

def produitMatriciel (A,B):
   fila_A = len(A)
   columna_A = len(A[0])
   fila_B = len(B)
   columna_B = len (B[0])

   if columna_A != fila_B:
       print ('None')
       return

   C = []
   for i in range(len(A)):
       C.append([0]*(len(B[0])))

   for i in range(len(A)):
       for j in range(len(B)):
           for k in range(len(B[0])):
               C [ i ] [j] += A[ i ][k]*B[k][j]

   print (C)
------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------
<ipython-input-1-484d674c941c> in productoMatricial(A, B)
    18         for j in range(len(B)):
    19             for k in range(len(B[0])):
---> 20                 C[ i ] [ j ] += A[ i ][k]*B[k][j]
    21
    22     print (C)

IndexError: list index out of range
Título: Re: Ayuda: Multiplicación de matrices - Python
Publicado por: Bundor en 4 Noviembre 2014, 01:29 AM
Casi lo tenias, revisa esta parte:

Código (python) [Seleccionar]

for i in range(len(A)):
       for j in range(len(B)):
           for k in range(len(B[0])):
               C [ i ] [j] += A[ i ][k]*B[k][j]


PD: He quitado la solución por si alguien lo quiere resolver por si mismo