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?
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
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
experimenta! jejeje de eso se trata la informática
print range(0,5,1)
quien es i en ese range?
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
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...
>>> 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
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
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
for i in range(N):
print x[N-1-i]
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]