2010-04-18 6 views
9

Ich versuche, eine While-Schleife zu verwenden, um Objekte zu einer Liste hinzuzufügen.Verwenden einer Schleife zum Hinzufügen von Objekten zu einer Liste (Python)

Hier ist im Grunde, was ich tun möchte:

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

kann ich das Objekt erhalten in die Liste aufgenommen, aber ich bin fest, wie mehrere Objekte in die Liste in der Schleife hinzuzufügen.

Hier ist der Code, den ich bisher habe:

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

Jede Hilfe wäre sehr dankbar!

+0

alle genannten Variablen Vermutung Wahl mein Fehler benannt werden sollte – Will

+0

Sie können Ihre Frage bearbeiten;) –

+0

haha ​​habe ich versucht, aber ich habe die verdammte Fehlermeldung Seite mit den LOLcat – Will

Antwort

24

Das Problem scheint zu sein, dass Sie in jeder Iteration die Liste auf eine leere Liste sind neu initialisiert:

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

Versuchen Sie, die Initialisierung über der Schleife bewegt, so dass es nur einmal ausgeführt wird.

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

so außerhalb der Schleife i a = [] und dann in der Schleife haben sollte ich haben sollte a.append (s)? – Will

+0

@Will: Das ist wahrscheinlich ein guter Anfang, obwohl es noch andere Probleme mit Ihrem Code gibt. Wenn Sie eine andere Zahl als 0 oder 1 eingeben, fügen Sie den gleichen Schüler erneut der Liste hinzu. Ist das wirklich was du willst? –

+0

haha ​​und um no .... Ich will die Fähigkeit, durch die Schleife zu gehen und einen anderen Schüler jedes Mal, wenn ich 1 wählen ... so würde ich einmal gehen, fügen Sie einen Schüler, wählen Sie 1 wieder und fügen Sie einen anderen Schüler ... etc ... usw. also jedes Mal, wenn ich durch gehe, kann ich einen Diff-Schüler – Will

0

Auto-Inkrementierung des Index in einer Schleife:

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