Foros del Web » Programando para Internet » Python »

indexacion de numeros en una matriz en python

Estas en el tema de indexacion de numeros en una matriz en python en el foro de Python en Foros del Web. hola les traigo haber si me pueden ayudar con un simple paso que no me sale en un trabajo, lo unico que no me sale ...
  #1 (permalink)  
Antiguo 18/11/2013, 12:54
 
Fecha de Ingreso: noviembre-2013
Mensajes: 5
Antigüedad: 10 años, 5 meses
Puntos: 0
indexacion de numeros en una matriz en python

hola les traigo haber si me pueden ayudar con un simple paso que no me sale en un trabajo, lo unico que no me sale de lo siguiente es el paso 8 y 9, lo demas me sale

este es el trabajo:

Paso 1: ingrese por consola la cantidad de filas fil de un arreglo cuadrado
# veifique que el valor sea mayor que 5 y menor que 17, si ello
# no ocurre pedir hasta que cumpla con la condicion.
# Paso 2: construir una lista con los dos primeros terminos de Fibonacci
# y mostrar por consola
# Paso 3: extender la lista con numeros de Fibonacci hasta que la cantidad
# de elementos sea igual a fil+5
# Paso 4: mostrar por consola la lista extendida
# Paso 5: eliminar de la lista los primeros 5 elementos y mostrar por
# consola la lista recortada
# Paso 6: crear un arreglo de fil filas y fil columnas inicializado en 0
# Paso 7: poner sobre la diagonal principal los elementos de la lista
# recortada de Fibonacci y mostrar por consola
# Paso 8: rellenar la matriz a partir de la diagonal principal con el
# siguientes criterios:
# M[i][i+1]= M[i][i]-2, M[i][i+2]= M[i][i+1]-2 (a la derecha)
# M[i][i-1]= M[i][i]+2, M[i][i-2]= M[i][i-1]22 (a la izquierda)
# Paso 9: muestre sobre consola la matriz rellenada
# Paso 10:sume todos los elementos impares del arreglo y muestrelo en consola
# Paso 11:cuente todos los elementos pares del arreglo y muestrelo en consola





y este es mi codigo hasta ahora


Código Python:
Ver original
  1. def numeros_impares(matriz):
  2.   sumatorio = 0
  3.   for i in range(len(matriz)):
  4.     for j in range(len(matriz[0])):
  5.       if matriz[i][j] % 2 != 0:
  6.         sumatorio += matriz[i][j]
  7.   return sumatorio
  8.  
  9.  
  10. def numeros_pares(matriz):
  11.   sumatorio = 0
  12.   for i in range(len(matriz)):
  13.     for j in range(len(matriz[0])):
  14.       if matriz[i][j] % 2 == 0:
  15.         sumatorio += matriz[i][j]
  16.   return sumatorio
  17.  
  18.  
  19.  
  20. fil = int(raw_input("dame el numero de filas:"))
  21.  
  22. while fil <= 5 or fil >= 17:
  23.   fil =int(raw_input("Ingresar nro. de filas Matriz cuadrada (entre >5 y <17):"))
  24.  
  25. lis = [1,1]
  26.  
  27. print lis
  28.  
  29. lis.append(2)
  30. f1 = 1
  31. f2 = 2
  32. for i in range(3,fil+5):
  33.  f = f1 + f2
  34.  f1 = f2
  35.  f2 = f
  36.  lis.append(f)
  37.  
  38.  
  39. print lis
  40.  
  41. nueva = lis[5:]
  42.  
  43. print nueva
  44.  
  45. mat = []
  46. for i in range(fil):
  47.   mat.append([0]*fil)
  48.  
  49. for i in range(fil):
  50.   for j in range(fil):
  51.     if j == i:
  52.       mat[i][j] =nueva[i]
  53.      
  54. print mat



repito por las dudas lo unico que no me sale son los pasos 8 y nueve, espero que alguno se de cuenta de como hacerlo, muchas gracias

Última edición por matiasvalle_2; 18/11/2013 a las 13:05
  #2 (permalink)  
Antiguo 18/11/2013, 13:22
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: indexacion de numeros en una matriz en python

Por favor usa el y no pongas otra parte del texto con tamaños de letras exagerados es molesto y me quita la ganas de leerlo.

El paso 9 no entiendo porque no lo puedes hacer si lo haces en la linea 54.
Si no te gusta, puedes hacer lo siguiente:
Código Python:
Ver original
  1. for fila en mat:
  2.     print fila

El paso 8 es un poco mas complicado, pero tampoco entiendo muy bien cual es tu duda. Es mas ni siquiera veo que lo hayas intentado. Pero tampoco te culpo la expresión (M[i][i-2]= M[i][i-1]22) tampoco tiene sentido.
  #3 (permalink)  
Antiguo 18/11/2013, 14:01
 
Fecha de Ingreso: noviembre-2013
Mensajes: 5
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: indexacion de numeros en una matriz en python

Cita:
Iniciado por razpeitia Ver Mensaje
Por favor usa el y no pongas otra parte del texto con tamaños de letras exagerados es molesto y me quita la ganas de leerlo.

El paso 9 no entiendo porque no lo puedes hacer si lo haces en la linea 54.
Si no te gusta, puedes hacer lo siguiente:
Código Python:
Ver original
  1. for fila en mat:
  2.     print fila

El paso 8 es un poco mas complicado, pero tampoco entiendo muy bien cual es tu duda. Es mas ni siquiera veo que lo hayas intentado. Pero tampoco te culpo la expresión (M[i][i-2]= M[i][i-1]22) tampoco tiene sentido.

perdon mi error es que capaz que no queria que perdieran tiempo viendo todo lo demas y queria mostrarles lo que en realidad necesitaba en realidad esa parte es asi:
M[i][i-2]= M[i][i-1]+2

osea lo que me pide es una matriz que que ya este un poco completa que eso si puedo hacer.... que es esta :
Código:
   |c  0|c  1|c  2|c  3|c  4|c  5
===================================
f  0|   8|   0|   0|   0|   0|   0
f  1|   0|  13|   0|   0|   0|   0
f  2|   0|   0|  21|   0|   0|   0
f  3|   0|   0|   0|  34|   0|   0
f  4|   0|   0|   0|   0|  55|   0
f  5|   0|   0|   0|   0|   0|  89
y tengo que hacer que eso se transforme(con las formulas del paso 8) a esto:
Código:
    |c  0|c  1|c  2|c  3|c  4|c  5
===================================
f  0|   8|   6|   4|   2|   0|  -2
f  1|  15|  13|  11|   9|   7|   5
f  2|  25|  23|  21|  19|  17|  15
f  3|  40|  38|  36|  34|  32|  30
f  4|  63|  61|  59|  57|  55|  53
f  5|  99|  97|  95|  93|  91|  89
espero ser mas claro asi

Última edición por razpeitia; 18/11/2013 a las 14:40
  #4 (permalink)  
Antiguo 18/11/2013, 14:58
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: indexacion de numeros en una matriz en python

Después del paso 8 tienes que hacer que se transforme en:

Código:
 8,  6,  4,  0,  0,  0
15, 13, 11,  9,  0,  0
25, 23, 21, 19, 17,  0
 0, 38, 36, 34, 32, 30
 0,  0, 59, 57, 55, 53
 0,  0,  0, 93, 91, 89
En la linea 49 ya recorres la diagonal principal (pero pudiste hacerlo con un solo for).
Código Python:
Ver original
  1. for i in range(fil):
  2.     mat[i][i] = nueva[i]

Ahora si te piden (M[i][i-2]= M[i][i-1]+2), simplemente hazlo!
Código Python:
Ver original
  1. for i in range(fil):
  2.     mat[i][i-2]= mat[i][i-1]+2
Claro antes de hacer esa operación recuerda validar i-2 no sea menor a 0 y lo mismo con j-1. Y obviamente si te piden i+2 valida que no sea mayor a fil.

Última edición por razpeitia; 18/11/2013 a las 15:04
  #5 (permalink)  
Antiguo 18/11/2013, 15:20
 
Fecha de Ingreso: noviembre-2013
Mensajes: 5
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: indexacion de numeros en una matriz en python

Cita:
Iniciado por razpeitia Ver Mensaje
Después del paso 8 tienes que hacer que se transforme en:

Código:
 8,  6,  4,  0,  0,  0
15, 13, 11,  9,  0,  0
25, 23, 21, 19, 17,  0
 0, 38, 36, 34, 32, 30
 0,  0, 59, 57, 55, 53
 0,  0,  0, 93, 91, 89
En la linea 49 ya recorres la diagonal principal (pero pudiste hacerlo con un solo for).
Código Python:
Ver original
  1. for i in range(fil):
  2.     mat[i][i] = nueva[i]

Ahora si te piden (M[i][i-2]= M[i][i-1]+2), simplemente hazlo!
Código Python:
Ver original
  1. for i in range(fil):
  2.     mat[i][i-2]= mat[i][i-1]+2
Claro antes de hacer esa operación recuerda validar i-2 no sea menor a 0 y lo mismo con j-1. Y obviamente si te piden i+2 valida que no sea mayor a fil.
muchas gracias! creo que resolviste mi problema

Etiquetas: indexacion, matriz
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:13.