Matrices (python)

Iniciado por facu_m, 8 Noviembre 2010, 22:45 PM

0 Miembros y 1 Visitante están viendo este tema.

facu_m

hola que tal..soy nuevo en la programacion con python y necesito alguna mano para arrancar con un programa que estoy haciendo..necesito ingresar por teclado la cantidad de filas y de columnas de una matriz..y tratar de lograr que cuando termine de poner los valores de la matriz me tire los valores de las diagonales en caso de que sea una matriz cuadrada..
quedaria algo asi
Ej. de caso particular. Cumple con la condicion de ser distintos de
cero.

Ingrese la cantidad de filas y columnas: 3 3

Valor[0][0]=3

Valor[0][1]=6

Valor[0][2]=9

Valor[1][0]=12

Valor[1][1]=15

Valor[1][2]=18

Valor[2][0]=1

Valor[2][1]=1

Valor[2][2]=1


Resultados
162
3240
1
(estos resultados vienen del producto de los valores de cada fila..la primera fila es 3, 6, 9 y si los multipliamos da 162..lo mismo para las otrsa filas..)

La diagonal secundaria es
9
15
1

desde ya agradezco alguna mano para guiarme un poco..!

Shell Root

#1
Podría ser así,
Código (python) [Seleccionar]
# @ Matriz declaration
sMatriz = [[3,6,9], [12,15,18], [1,1,1]]

def getMain(pMatriz): # Matriz is params
for i in range(0,3):
sReturn = 1
for j in range(0,3):
sReturn = sReturn * pMatriz[i][j]
print " ", sReturn

def getSecondary(pMatriz): # Matriz is params
for i in range(0,3):
sReturn = 1
for j in range(0,3):
if (i + j == 1 + 1):
print " ", pMatriz[i][j]

print "Main"
getMain(sMatriz)
print ""
print "Secondary"
getSecondary(sMatriz)


alex@shellroot:~/Escritorio$ python PoC.py
Main
  162
  3240
  1

Secondary
  9
  15
  1
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Yeison.Eng

Sólo porque no tengo nada que hacer, aquí esta lo que podrías necesitar
Suerte, comenta si te sirve

(solo copia y pega esto en un editor de python y listo)

Código (python) [Seleccionar]

#! /usr/bin/python
#-*- coding: utf-8 -*-


#----------------------------------------------------------------------
def Pedir_Tamanio():
    filas=raw_input("Cantidad de filas: ")
    columnas=raw_input("Cantidad de columnas: ")
    fila=int(filas)
    columna=int(columnas)
    return fila, columna

#----------------------------------------------------------------------
def Producto_lista(lista):
    contador=0
    producto=1.0
    while contador<len(lista):
        producto*=float(lista[contador])
        contador+=1
    return producto
       

########################################################################
class Trabajar_con_matriz:
    """"""
    #----------------------------------------------------------------------
    def __init__(self, fila, columna):
        self.fila=fila
        self.columna=columna
       
    #----------------------------------------------------------------------
    def Llenar_matriz(self):
        self.matriz=[]
        i=0
        while i<self.fila:
            inter_matriz=[]
            j=0
            while j<self.columna:
                valor=raw_input("Valor [%d][%d]: " %(i, j))
                inter_matriz.append(float(valor))
                j+=1
            i+=1
            self.matriz.append(inter_matriz)
        return True
   
    #----------------------------------------------------------------------
    def Calcular_productos_por_fila(self):
        i=0
        while i<self.fila:
            producto=Producto_lista(self.matriz[i])
            print "Producto fila %d: %f" %(i+1, producto)
            i+=1
        return True
           
    #----------------------------------------------------------------------
    def Optener_diagonal_secundaria(self):
        if self.fila==self.columna:
            j=self.columna-1
            i=0
            print "Diagonal inversa:"
            while j>=0:
                print self.matriz[i][j]
                i+=1
                j-=1
            return True
        else:
            print "No es una matriz cuadrada"
            return False
       
         
fila, columna =Pedir_Tamanio()
Matriz=Trabajar_con_matriz(fila, columna)
Matriz.Llenar_matriz()
print "\n\n"
Matriz.Calcular_productos_por_fila()
print "\n\n"
Matriz.Optener_diagonal_secundaria()
raw_input()