Ayuda Python! Matriz..

Iniciado por cuazzo, 16 Junio 2010, 00:50 AM

0 Miembros y 2 Visitantes están viendo este tema.

cuazzo

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 (python) [Seleccionar]

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

leogtz

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:

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?

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


Primero corrige eso.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

cuazzo


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.!

leogtz

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 (python) [Seleccionar]
m=int(raw_input("Ingrese el numero de filas: "))
n=int(raw_input("Ingrese el numero 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
print

for j in range(m):
for k in range(n):
if A[j][k] % 3 == 0:
print A[j][k]
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

cuazzo

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

plof

Las comprehension lists vienen bien para manejar arrays:

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



Cita de: cuazzo en 16 Junio 2010, 02:27 AM
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.

cuazzo

Cita de: plof en 16 Junio 2010, 02:33 AM
Las comprehension lists vienen bien para manejar arrays:

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



Cita de: cuazzo en 16 Junio 2010, 02:27 AM
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..

plof

Cita de: cuazzo en 16 Junio 2010, 02:42 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...

n , nº de columnas
m , nº filas
len(A), nº de filas
len(A[x]) , nº de columnas de la fila x-ésima.



Cita de: cuazzo en 16 Junio 2010, 02:42 AM
se me ocurre sumar elemento por elemento,
A ver si ésto te ayuda:

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


Cita de: cuazzo en 16 Junio 2010, 02:42 AM
soy muy novato recien empeze hace 2 semanas, pero ya voy a ir mejorando..
Bienvenido a python  ;).

cuazzo

Cita de: plof en 16 Junio 2010, 03:19 AM
Cita de: cuazzo en 16 Junio 2010, 02:42 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...

n , nº de columnas
m , nº filas
len(A), nº de filas
len(A[x]) , nº de columnas de la fila x-ésima.



Cita de: cuazzo en 16 Junio 2010, 02:42 AM
se me ocurre sumar elemento por elemento,
A ver si ésto te ayuda:

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


Cita de: cuazzo en 16 Junio 2010, 02:42 AM
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..!

cuazzo

plof y leo.. encontre la forma de recorrer la matriz por columnas..
Es asi no:
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..