2017-11-09 1 views
1

Ich habe versucht, eine Klasse BookStack() zu erstellen, in der ich wollte, dass der Benutzer Buchnummer und Name als Liste eingeben und es wird an eine bereits erstellte Liste angefügt, so dass eine geschachtelte Liste. Mein Code ist wie folgt:Verschachtelte Liste in Klasse

class BookStack(): 
    def __init__(self): 
     self.books=[] 

    def push(self,books): 
     self.books.append(books) 
     print self.books 

    def pop(self): 
     self.books.pop() 

    def __str__(self): 
     for i in self.books: 
      print i,'\n' 

def main(): 
    while 1: 
     print "    1. Enter Book Credentials" 
     print "  2. Remove the most recent book from database" 
     print "    3. Print Database" 

     choice=int(raw_input("Enter Choice: ")) 
     if(choice==1): 
      book=BookStack() 
      BookNumName=input("Enter Book Name & Number as [Number,Name]: ") 
      book.push(BookNumName) 
     elif(choice==2): 
      book.pop() 
     elif(choice==3): 
      book.__str__() 
     proceed=raw_input("Do you want to enter more(Y/N)?: ") 
     if(proceed!='y' and proceed!='Y'): 
      break 

if __name__=='__main__': 
    main() 

Aber wenn ich eine Liste wie [1, 'A'] eingeben, [2, 'B'], [3, 'C'], der Ausgang ist

[[3, 'C']] 

der Ausgang ich möchte:

[[1,'A'],[2,'B'],[3, 'C']]  

Antwort

2

benötigen Sie die folgenden aus der Schleife zu bewegen:

book=BookStack() 

Stattdessen führen Sie es einmal vor dem Eintritt in die Schleife.

Sie möchten nur eine BookStack erstellen. Danach, nur push neue Bücher darauf. Wenn Sie es neu erstellen, starren Sie mit einem leeren BookStack nach vorne.

+0

Vielen Dank, Tom :) –