2010-04-18 3 views
9

Sto provando a utilizzare un ciclo while per aggiungere oggetti a un elenco.Utilizzo di un loop per aggiungere oggetti a un elenco (python)

Qui è fondamentalmente ciò che voglio fare:

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)))) 

posso ottenere l'oggetto aggiunto alla lista, ma mi sono bloccato a come aggiungere più oggetti alla lista nel ciclo.

Ecco il codice che ho finora:

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") 

Qualsiasi aiuto sarebbe molto apprezzato!

+0

tutte le variabili di nome congettura deve essere denominato scelta mio errore – Will

+0

È possibile modificare la tua domanda;) –

+0

haha ​​Ho provato a ma ho ottenuto pagina messaggio di errore maledetta con la LOLcat – Will

risposta

24

Il problema sembra essere che state reinizializzare l'elenco per un elenco vuoto in ogni iterazione:

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

provare a spostare l'inizializzazione sopra il punto in modo che venga eseguita una sola volta.

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

così fuori del ciclo avrei dovuto a = [] e poi all'interno del ciclo avrei dovuto a.append (S)? – Will

+0

@Will: Probabilmente è un buon inizio, anche se ci sono altri problemi con il tuo codice. Se inserisci un numero diverso da 0 o 1, aggiungerai di nuovo lo stesso studente all'elenco. E 'davvero ciò che vuoi? –

+0

haha ​​e um no .... voglio la possibilità di andare attraverso il ciclo e aggiungere uno studente diverso ogni volta che scelgo 1 ... quindi vorrei passare una volta, aggiungere uno studente, scegliere di nuovo 1 e aggiungere uno studente diverso ... ecc ... ecc così ogni volta che passo posso aggiungere uno studente di diff – Will

0

incremento automatico l'indice in un ciclo:

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