Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: cuazzo en 16 Junio 2010, 00:50 am



Título: Ayuda Python! Matriz..
Publicado por: cuazzo en 16 Junio 2010, 00:50 am
Hola... mi problema es el siguiente, tengo que crear una matriz, mostrarla, y luego mostrar solo los elementos de la matriz que son divisibles por 3, yo hago lo siguiente, y me sale un error!, que esta mal? como podria hacer?




Código
  1. m=int(raw_input('Ingrese el número de filas: '))
  2. n=int(raw_input('Ingrese el número de columnas: '))
  3. minimo = min(m,n)
  4.  
  5. A=[]
  6. for j in range(m):
  7.  A.append( [0]*n)
  8.  
  9. print 'Lectura de la matriz A'
  10. for j in range(m):
  11.  for k in range(n):
  12.    A[j][k] = float(raw_input('Dame el componente (%d,%d): ' %(j+1,k+1)))
  13.  
  14. print A
  15.  
  16. for i in A:
  17.  if i %3 == 0:
  18.   print i


Título: Re: Ayuda Python! Matriz..
Publicado por: leogtz en 16 Junio 2010, 01:32 am
Lo primero, pon el código con sus respectiva etiqueta, o te borro el mensaje.

Segundo, hay más errores, no solo te sale "un error".

En primera, tengo entendido que no se aceptan acentos, aquí los hay:

Código:
m=int(raw_input('Ingrese el número de filas: '))
n=int(raw_input('Ingrese el número de columnas: '))
Corrigelos.

Segundo, ¿qué es esto?

Código:
for j in range(m):
  A.append(
*n)

Primero corrige eso.


Título: Re: Ayuda Python! Matriz..
Publicado por: cuazzo en 16 Junio 2010, 01:43 am

Código:
m=int(raw_input("Ingrese el número de filas: "))
n=int(raw_input("Ingrese el número de columnas: "))
minimo = min(m,n)

A=[]
for j in range(m):
  A.append([0]*n)
 
print "Lectura de la matriz A"
for j in range(m):
  for k in range(n):
    A[j][k] = float(raw_input("Dame el componente (%d,%d): " %(j+1,k+1)))
   
print A

for i in A:
  if i %3 == 0:
   print i

Hay esta, el python admite acentos como comillas tambien, por eso.!, la primera parte, hasta el print A, esta perfecto, esa es la parte en donde se crea la matriz, la 2da parte esta mal..

Perdon por no poner el codigo en su etiqueta, es que soy nuevo en el foro.!
Muchas gracias por responder.!


Título: Re: Ayuda Python! Matriz..
Publicado por: leogtz en 16 Junio 2010, 01:53 am
Código:
leo@lein:~/Escritorio$ python py.py 
Ingrese el numero de filas: 3
Ingrese el numero de columnas: 3
Lectura de la matriz A
Dame el componente (1,1): 1
Dame el componente (1,2): 2
Dame el componente (1,3): 3
Dame el componente (2,1): 4
Dame el componente (2,2): 5
Dame el componente (2,3): 6
Dame el componente (3,1): 7
Dame el componente (3,2): 8
Dame el componente (3,3): 9
[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]]

3.0
6.0
9.0
leo@lein:~/Escritorio$

Código
  1. m=int(raw_input("Ingrese el numero de filas: "))
  2. n=int(raw_input("Ingrese el numero de columnas: "))
  3. minimo = min(m,n)
  4.  
  5. A=[]
  6. for j in range(m):
  7.  A.append([0]*n)
  8.  
  9. print "Lectura de la matriz A"
  10. for j in range(m):
  11.  for k in range(n):
  12.    A[j][k] = float(raw_input("Dame el componente (%d,%d): " %(j+1,k+1)))
  13.  
  14. print A
  15. print
  16.  
  17. for j in range(m):
  18. for k in range(n):
  19. if A[j][k] % 3 == 0:
  20. print A[j][k]
  21.  


Título: Re: Ayuda Python! Matriz..
Publicado por: cuazzo en 16 Junio 2010, 02:27 am
Muchas muchas gracias, ahora me surgio otra duda, estoy realizando muchos ejercicios.!.,si yo quiero generar una matriz de una fila como resultado de la suma de los  elementos de las columnas de la matriz anterior, ¿como tengo que hacer?,
sumar uno por uno los elementos?, seria muy largo, no se me ocurre otra cosa :S


Título: Re: Ayuda Python! Matriz..
Publicado por: plof en 16 Junio 2010, 02:33 am
Las comprehension lists vienen bien para manejar arrays:
Código:
m=int(raw_input("Ingrese el n\xa3mero de filas: "))
n=int(raw_input("Ingrese el n\xa3mero de columnas: "))

A = []
[ A.append( [  float(raw_input('Dame el componente (%d,%d): ' %(j+1,i+1))) for i in range(n) ] ) for j in range(m)]

print A , "\n\n"

for i in A:
    for j in i:
        if not j % 3:
            print j


si yo quiero generar una matriz de una fila como resultado de la suma de los  elementos de las columnas de la matriz anterior, ¿como tengo que hacer?,
sumar uno por uno los elementos?
¿Por qué no lo intentas hacerlo por ti mismo?

Saludos.


Título: Re: Ayuda Python! Matriz..
Publicado por: cuazzo en 16 Junio 2010, 02:42 am
Las comprehension lists vienen bien para manejar arrays:
Código:
m=int(raw_input("Ingrese el n\xa3mero de filas: "))
n=int(raw_input("Ingrese el n\xa3mero de columnas: "))

A = []
[ A.append( [  float(raw_input('Dame el componente (%d,%d): ' %(j+1,i+1))) for i in range(n) ] ) for j in range(m)]

print A , "\n\n"

for i in A:
    for j in i:
        if not j % 3:
            print j


si yo quiero generar una matriz de una fila como resultado de la suma de los  elementos de las columnas de la matriz anterior, ¿como tengo que hacer?,
sumar uno por uno los elementos?
¿Por qué no lo intentas hacerlo por ti mismo?

Saludos.

Es que lo estoy intentando!, se me ocurre sumar elemento por elemento, pero si no se la dimension de la matriz no es posible hacer eso, y no se me ocurre mucho, soy muy novato recien empeze hace 2 semanas, pero ya voy a ir mejorando..


Título: Re: Ayuda Python! Matriz..
Publicado por: plof en 16 Junio 2010, 03:19 am
pero si no se la dimension de la matriz no es posible hacer eso
No te entiendo, la dimensión del array lo tienes en...
Código:
n , nº de columnas
m , nº filas
len(A), nº de filas
len(A[x]) , nº de columnas de la fila x-ésima.


se me ocurre sumar elemento por elemento,
A ver si ésto te ayuda:
Código:
m=int(raw_input("Ingrese el n\xa3mero de filas: "))
n=int(raw_input("Ingrese el n\xa3mero de columnas: "))

A = []
B = []
[ A.append( [  float(raw_input('Dame el componente (%d,%d): ' %(j+1,i+1))) for i in range(n) ] ) for j in range(m)]
[ B.append(0) for i in range(n)]

print A , "\n\n"

# Sentencia de control que suma las columnas del array A y lo almacena en el array B
for i in range(m):
    for j in range(n):
        print "?"
       
print "Soluci\xa2n: ", B

soy muy novato recien empeze hace 2 semanas, pero ya voy a ir mejorando..
Bienvenido a python  ;).


Título: Re: Ayuda Python! Matriz..
Publicado por: cuazzo en 16 Junio 2010, 03:44 am
pero si no se la dimension de la matriz no es posible hacer eso
No te entiendo, la dimensión del array lo tienes en...
Código:
n , nº de columnas
m , nº filas
len(A), nº de filas
len(A[x]) , nº de columnas de la fila x-ésima.


se me ocurre sumar elemento por elemento,
A ver si ésto te ayuda:
Código:
m=int(raw_input("Ingrese el n\xa3mero de filas: "))
n=int(raw_input("Ingrese el n\xa3mero de columnas: "))

A = []
B = []
[ A.append( [  float(raw_input('Dame el componente (%d,%d): ' %(j+1,i+1))) for i in range(n) ] ) for j in range(m)]
[ B.append(0) for i in range(n)]

print A , "\n\n"

# Sentencia de control que suma las columnas del array A y lo almacena en el array B
for i in range(m):
    for j in range(n):
        print "?"
       
print "Soluci\xa2n: ", B

soy muy novato recien empeze hace 2 semanas, pero ya voy a ir mejorando..
Bienvenido a python  ;).

Gracias.. mi idea es empezar con Python y despues darle bien bien al C++, estoy por mi cuenta nomas, asi que como ves, estoy luchando..!


Título: Re: Ayuda Python! Matriz..
Publicado por: cuazzo en 16 Junio 2010, 03:57 am
plof y leo.. encontre la forma de recorrer la matriz por columnas..
Es asi no:
Código:
M = Matriz
m = Numero de filas
n = Numero de columnas
for j in range(n):
    for i in range(m):
        print "M[%d][%d] = %d" % (i, j, M[i][j])

Ahora, como hago para sumar los valores de cada columna?, me queda eso y ya soluciono el problema..


Título: Re: Ayuda Python! Matriz..
Publicado por: leogtz en 16 Junio 2010, 04:10 am
Sí, bien, era solo voltear los indices y modificar los ranges().