Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: facu_m en 8 Noviembre 2010, 22:45 pm



Título: Matrices (python)
Publicado por: facu_m en 8 Noviembre 2010, 22:45 pm
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..!


Título: Re: matrices (python)
Publicado por: Shell Root en 8 Noviembre 2010, 23:22 pm
Podría ser así,
Código
  1. # @ Matriz declaration
  2. sMatriz = [[3,6,9], [12,15,18], [1,1,1]]
  3.  
  4. def getMain(pMatriz): # Matriz is params
  5. for i in range(0,3):
  6. sReturn = 1
  7. for j in range(0,3):
  8. sReturn = sReturn * pMatriz[i][j]
  9. print " ", sReturn
  10.  
  11. def getSecondary(pMatriz): # Matriz is params
  12. for i in range(0,3):
  13. sReturn = 1
  14. for j in range(0,3):
  15. if (i + j == 1 + 1):
  16. print " ", pMatriz[i][j]
  17.  
  18. print "Main"
  19. getMain(sMatriz)
  20. print ""
  21. print "Secondary"
  22. getSecondary(sMatriz)

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

Secondary
  9
  15
  1


Título: Re: matrices (python)
Publicado por: Yeison.Eng en 8 Noviembre 2010, 23:30 pm
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
  1. #! /usr/bin/python
  2. #-*- coding: utf-8 -*-
  3.  
  4.  
  5. #----------------------------------------------------------------------
  6. def Pedir_Tamanio():
  7.    filas=raw_input("Cantidad de filas: ")
  8.    columnas=raw_input("Cantidad de columnas: ")
  9.    fila=int(filas)
  10.    columna=int(columnas)
  11.    return fila, columna
  12.  
  13. #----------------------------------------------------------------------
  14. def Producto_lista(lista):
  15.    contador=0
  16.    producto=1.0
  17.    while contador<len(lista):
  18.        producto*=float(lista[contador])
  19.        contador+=1
  20.    return producto
  21.  
  22.  
  23. ########################################################################
  24. class Trabajar_con_matriz:
  25.    """"""
  26.    #----------------------------------------------------------------------
  27.    def __init__(self, fila, columna):
  28.        self.fila=fila
  29.        self.columna=columna
  30.  
  31.    #----------------------------------------------------------------------
  32.    def Llenar_matriz(self):
  33.        self.matriz=[]
  34.        i=0
  35.        while i<self.fila:
  36.            inter_matriz=[]
  37.            j=0
  38.            while j<self.columna:
  39.                valor=raw_input("Valor [%d][%d]: " %(i, j))
  40.                inter_matriz.append(float(valor))
  41.                j+=1
  42.            i+=1
  43.            self.matriz.append(inter_matriz)
  44.        return True
  45.  
  46.    #----------------------------------------------------------------------
  47.    def Calcular_productos_por_fila(self):
  48.        i=0
  49.        while i<self.fila:
  50.            producto=Producto_lista(self.matriz[i])
  51.            print "Producto fila %d: %f" %(i+1, producto)
  52.            i+=1
  53.        return True
  54.  
  55.    #----------------------------------------------------------------------
  56.    def Optener_diagonal_secundaria(self):
  57.        if self.fila==self.columna:
  58.            j=self.columna-1
  59.            i=0
  60.            print "Diagonal inversa:"
  61.            while j>=0:
  62.                print self.matriz[i][j]
  63.                i+=1
  64.                j-=1
  65.            return True
  66.        else:
  67.            print "No es una matriz cuadrada"
  68.            return False
  69.  
  70.  
  71. fila, columna =Pedir_Tamanio()
  72. Matriz=Trabajar_con_matriz(fila, columna)
  73. Matriz.Llenar_matriz()
  74. print "\n\n"
  75. Matriz.Calcular_productos_por_fila()
  76. print "\n\n"
  77. Matriz.Optener_diagonal_secundaria()
  78. raw_input()
  79.  
  80.  
  81.