[AYUDA]Insertando elemento en un array en python

Iniciado por AgnesBlack, 26 Enero 2017, 08:03 AM

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

AgnesBlack

Hola , nuevamente yo intentando aprender python y surgiendo con nuevas dudas , tengo una consigna en que dada una lista insertar en una posicion no mayor al tamaño insertar un elemento , mi resolucion en c fue la siguiente



#include <stdio.h>
int main()
{
int n,x[100],i,k,pos;
printf("ingrese tamanio:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("ingrese valor:");
scanf("%d",&x[i]);
}
printf("el vector es:");
for(i=1;i<=n;i++)
{
printf("%d",x[i]);
}
printf("ingresar valor a insertar:");
scanf("%d",&k);
printf("ingrese posicion a insertar:");
scanf("%d",&pos);
for(i=n;n>=pos;i--)
{
x[i+1]=x[i];
}
x[pos]=k;
n=n+1;
printf("el nuevo vector es:");
for(i=1;i<=n;i++)
printf("%d",x[i]);
return 0;
}



me funciona correctamente, obviando que la posicion que siempre ingresare sera menor al tamaño , que eso lo areglare cuando solucione esto en python
este es mi codigo en python


n=int(raw_input("ingrese tamanio:"))
x=[]
for i in range(n):
   x.append(int(raw_input("ingrese valor:")))
print "el vector es:"
for i in range(n):
   print x[i]
k=int(raw_input("ingrese valor a insertar:"))
pos=int(raw_input("ingrese posicion a insertar:"))
for i in range(n-1,-1,pos):
   x[i+1]=x[i]
   print x[i]
x[pos]=k
n=n+1
for i in range(n):
   print x[i]



pero no me ejecuta correctamente el programa,me sale este error


 x[pos]=k
IndexError: list assignment index out of range


cual es el error? o que estoy haciendo mal en python?



PUAROT

Estas teniendo en cuenta que pos debe ser igual a un valor negativo  ?

AgnesBlack

Cita de: PUAROT en 26 Enero 2017, 10:26 AM
Estas teniendo en cuenta que pos debe ser igual a un valor negativo  ?


mmm como lo tendria q hacer eso? tu que me aconsejaria o como seria tu codigo en python

engel lex

#3
en python si el indice es negativa accede al array de forma inversa... es decir


a = [5,2,0,1,2,8]

a[-1] es 8
a[-2] es 2

y así en más



por que usas esto
pos=int(raw_input("ingrese posicion a insertar:"))

en lugar de simplemente hacer

pos=input("ingrese posicion a insertar:")

? el segundo retorna en int en caso que ingresen un int
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

bien modifique el codigo de la siguiente manera


n=int(raw_input("ingrese tamanio:"))
x=[]
for i in range(n):
    x.append(int(raw_input("ingrese valor:")))
print "el vector es:"
for i in range(n):
    print x[i]
k=int(raw_input("ingrese valor a insertar:"))
pos=input(raw_input("ingrese posicion a insertar:"))
for i in range(n-1,-1,pos):
    x[i+1]=x[i]
    print x[i]
x[pos]=k
n=n+1
for i in range(n):
    print x[i]


pero me sigue saliendo el error


    pos=input(raw_input("ingrese posicion a insertar:"))
  File "<string>", line 0
   
    ^
SyntaxError: unexpected EOF while parsing

PUAROT

Te sobra el raw_input...
tienes:
pos=input(raw_input("ingrese posicion a insertar:"))

y deberias usar pos=input("ingrese posicion a insertar:")