2010-04-18 12 views
9

Estoy tratando de usar un bucle while para agregar objetos a una lista.Usar un bucle para agregar objetos a una lista (python)

Aquí es básicamente lo que quiero hacer:

class x: 
    pass 

choice = raw_input(pick what you want to do) 

while(choice!=0): 
    if(choice==1): 
     Enter in info for the class: 
     append object to list (A) 
    if(choice==2): 
     print out length of list(A) 
    if(choice==0): 
     break 
    ((((other options)))) 

puedo conseguir el objeto agregado a la lista, pero estoy atascado en cómo agregar varios objetos a la lista en el bucle.

Aquí está el código que tengo hasta ahora:

print "Welcome to the Student Management Program" 

class Student: 
    def __init__ (self, name, age, gender, favclass): 
     self.name = name 
     self.age = age 
     self.gender = gender 
     self.fac = favclass 

choice = int(raw_input("Make a Choice: ")) 

while (choice !=0): 
    if (choice==1): 
     print("STUDENT") 
     namer = raw_input("Enter Name: ") 
     ager = raw_input("Enter Age: ") 
     sexer = raw_input("Enter Sex: ") 
     faver = raw_input("Enter Fav: ")  

    elif(choice==2): 
     print "TESTING LINE" 
    elif(choice==3): 
     print(len(a)) 

    guess=int(raw_input("Make a Choice: ")) 

    s = Student(namer, ager, sexer, faver) 
    a =[]; 
    a.append(s) 

raw_input("Press enter to exit") 

Cualquier ayuda sería muy apreciada!

+0

todas las variables conjetura llamada debe ser nombrado elección mi error – Will

+0

Aquí puede editar su pregunta;) –

+0

jaja Traté de pero me dio la maldita página de mensaje de error con el LOLcat – Will

Respuesta

24

El problema parece ser que se está reinicializando la lista a una lista vacía en cada iteración:

while choice != 0: 
    ... 
    a = [] 
    a.append(s) 

trate de mover la inicialización por encima del bucle de manera que sólo se ejecuta una vez.

a = [] 
while choice != 0: 
    ... 
    a.append(s) 
+0

tan fuera del ciclo debería tener a = [] y luego dentro del ciclo debería tener a.append (s)? – Will

+0

@Will: Probablemente sea un buen comienzo, aunque hay otros problemas con su código. Si ingresa un número que no sea 0 o 1, agregará el mismo estudiante a la lista nuevamente. ¿Es esto realmente lo que quieres? –

+0

jaja y um no .... quiero la capacidad de pasar por el ciclo y agregar un alumno diferente cada vez que elijo 1 ... así que pasaría una vez, agregaría un alumno, elegiría 1 de nuevo y agregaría un alumno diferente ... etc ... etc así que cada vez que paso puedo agregar un alumno diff – Will

0

incremento automático del índice en un bucle:

myArr[(len(myArr)+1)]={"key":"val"} 
Cuestiones relacionadas