Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: AgnesBlack en 10 Enero 2017, 04:01 am



Título: Muestra de un array inverso en python
Publicado por: AgnesBlack en 10 Enero 2017, 04:01 am
Hola tengo el siguiente problema , tengo que mostra una lista de n tamaño
como por ejemplo N=5
1,4,5,2,7

entonce el programa deberia mostrar

7,2,5,4,1

este es el codigo en python

Código:
n=input("ingrese tamanio:")
x=[]
y=[0]*n
for i in range(n):
   x.append(int(raw_input("ingrese valor:")))
m=0
for i in range(n,0,-1):
   y[m]=x[i]
   m=m+1
  print y[m]


pero en salida me muestra este error

Código:
 y[m]=x
IndexError: list index out of range

a que se debe ? que estoy haciendo mal?


Título: Re: Muestra de un array inverso en python
Publicado por: engel lex en 10 Enero 2017, 04:10 am
range(i,f,s) generará una lista tal que sea desde i hasta f sin incluirlo, moviendose b]s[/b] valores

si haces un print a tu range verás que el error es que intenta acceder al array en la posición 5, cuando tu array va del 0 al 4 como es normal



Título: Re: Muestra de un array inverso en python
Publicado por: AgnesBlack en 10 Enero 2017, 04:14 am
osea que lo que me quieres decir que mi range tiene que ser asi

Código:
for i in range(n,i,-1):

?
gracias por responder

por que cuando pongo solamente

Código:
for i in range(n,0,-1):
    print i
   

me muestra la posiciones invertidas


Título: Re: Muestra de un array inverso en python
Publicado por: engel lex en 10 Enero 2017, 04:17 am
experimenta! jejeje de eso se trata la informática

Código
  1. print range(0,5,1)

quien es i en ese range?


Título: Re: Muestra de un array inverso en python
Publicado por: AgnesBlack en 10 Enero 2017, 04:24 am
i es 0 (donde inicia)
n es 5 (el tamaño)
1 el step +1

y tambien se que la forma inversa de que lo muestre invertido es

 list(range(5,0,-1))

en eso no tengo duda la duda que tengo es por que mi codigo no almacena el datos en la posicion
como te mostre en el mensaje de arriba cuando solamente pongo print i , me muestra las posiciones invertidas , pero cuando pongo el y[m]=x que vendria ser la posicion 5 por ejemplo el valor de ella no me la guarda en y[m] y es lo q vengo de hace dias averiguando el por que


Título: Re: Muestra de un array inverso en python
Publicado por: engel lex en 10 Enero 2017, 04:29 am
Código:
for i in range(n,i,-1):

Citar
i es 0 (donde inicia)
n es 5 (el tamaño)
1 el step +1

i lo define el for, no está definido antes...



Código
  1. >>> range(5,0,-1)
  2. [5, 4, 3, 2, 1]

es decir el va a intentar acceder a tu array en la posición 5 hasta la 1

pero tu array va desde la posición 0 hasta la 4... cuando intenta acceder a la posición 5 que no exíste, indica

Código:
IndexError: list index out of range

tu range tiene que ser desde n-1, hasta -1 (porque no lo incluye), con saltos de -1



Título: Re: Muestra de un array inverso en python
Publicado por: AgnesBlack en 10 Enero 2017, 04:57 am
Despues de analizar y comprender un poco al fin el array y mas de lo tu me explicaste

Código:
n=input("ingrese tamanio:")
x=[]
y=[0]*n
for i in range(n):
   x.append(int(raw_input("ingrese valor:")))
m=0
for i in range(n-1,-1,-1):
   y[m]=x[i]
   print y[m]
   m=m+1
   

me salio correctamente el codigo , te lo agradezco mucho  :) muchas gracias por tu apoyo , al fin pude solucionarlo


Título: Re: Muestra de un array inverso en python
Publicado por: engel lex en 10 Enero 2017, 05:07 am
por cierto, otra opción era usar matemáticas :)

si quieres que se mueva del N al 0 sabiendo que tu entrada es del 0 al N (range(N) ) es N-1-i

Código
  1. for i in range(N):
  2.  print x[N-1-i]
 


Título: Re: Muestra de un array inverso en python
Publicado por: AgnesBlack en 10 Enero 2017, 05:12 am
jaja por algo eres el admin :) , si me falta nociones de matematicas tengo que leer un poco mas , ya leere esos libros que subiste de matematicas
aca el codigo modificado

Código:
n=input("ingrese tamanio:")
x=[]
y=[0]*n
for i in range(n):
   x.append(int(raw_input("ingrese valor:")))
m=0
for i in range(n):
   y[m]=x[n-1-i]
   print y[m]