Hola, soy estudiante de ing. informática y estamos usando python 3, nos pidieron crear un algoritmo que creara una matriz. hasta ahí creo que todo bien ... pero tengo problemas o bien nose como sacar las diagonales :-( ... si me pueden ayudar con esto pls.
Les dejo lo que tengo:
fila = 3
columna = 3
matriz =[]
for i in range(fila):
matriz.append([0]*columna)
print (matriz)
##les da valor a la matriz 1a9
contador=1
for i in range(fila):
for j in range(columna):
matriz[j]=contador
contador+=1
print (matriz)
## ordena la matriz
for i in matriz:
print (i)
----------- imprimiria lo siguiente, hasta el momento
[[0.0.0],[0.0.0],[0.0.0]]
[[1.2.3],[4.5.6],[7.8.9]]
[1.2.3]
[4.5.6]
[7.8.9]
necesito agregarle el algoritmo que me imprima [1.5.9] .. [3.5.7]
gracias por la ayuda :'(
Había un error en el código inicial. En lugar de:
matriz[j]=contador
era:
matriz[i][j]=contador
fila = 3
columna = 3
matriz =[]
for i in range(fila):
matriz.append([0]*columna)
print (matriz)
##les da valor a la matriz 1a9
contador=1
for i in range(fila):
for j in range(columna):
matriz[i][j]=contador
contador+=1
print(matriz)
## ordena la matriz
for k in matriz:
print (k)
##Diagonal principal
a=[]
for i in range(fila):
a.append(matriz[i][i])
print(a)
##Diagonal secundaria
a=[]
for i in range(fila):
a.append(matriz[i][(columna-1)-i])
print(a)
La propiedad que es buena para este tipo de problemas, es tomar en cuenta la estructura de la matriz.
Los elementos de la diagonal principal, siempre serán del tipo fila 1 columna 1, fila 2, columna 2. El 'indice' del elemento de la diagonal, coincide tanto en columnas como en filas.
Los elementos de la diagonal secundaria, son similares a los de la diagonal principal, en que su 'indice' de fila es idéntico, y la diferencia radica, en que parte del ultimo elemento de la fila, y luego va bajando.
Diagonal secundaria, de matriz n*n:
- fila 1, columna n
- fila 2, columna n-1
- fila 3, columna n-2
wooow ..muchas gracias :D