Muestra de un array inverso en python

Iniciado por AgnesBlack, 10 Enero 2017, 04:01 AM

0 Miembros y 1 Visitante están viendo este tema.

AgnesBlack

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


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


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


a que se debe ? que estoy haciendo mal?

engel lex

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

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

AgnesBlack

#2
osea que lo que me quieres decir que mi range tiene que ser asi

for i in range(n,i,-1):

?
gracias por responder

por que cuando pongo solamente


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


me muestra la posiciones invertidas

engel lex

experimenta! jejeje de eso se trata la informática

Código (python) [Seleccionar]
print range(0,5,1)

quien es i en ese range?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

AgnesBlack

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

engel lex

for i in range(n,i,-1):

Citari 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 (python) [Seleccionar]
>>> range(5,0,-1)
[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

IndexError: list index out of range

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

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

AgnesBlack

Despues de analizar y comprender un poco al fin el array y mas de lo tu me explicaste


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

engel lex

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 (python) [Seleccionar]
for i in range(N):
  print x[N-1-i]

 
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

AgnesBlack

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


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]