2017-05-13 6 views
0

Ich bin mir nicht sicher, wie man den letzten Platz loswerden kann, könnte mir bitte jemand zeigen, was ich mit meinem Code machen soll. Dank Loswerden des letzten Platzes

class UnorderedList: 
    def __init__(self): 
     self.head = None 

    def __str__(self): 
     item = self.head 
     print("[", end="") 
     while item != None: 
      print(item.get_data(), sep="", end=" ") 
      item = item.get_next() 
     print("]", end="") 

    def add(self, item): 
     new_node = Node(item) 
     new_node.set_next(self.head) 
     self.head = new_node 

Erwartet: [8 7 6 5 3]

Got: [8 7 6 5 3]

+7

Bitte verwenden Sie keine Bilder, kopieren Sie einfach den Code in die Frage. – MSeifert

+3

'__str__' sollte nicht 'drucken', es sollte konstruieren und 'returning' ein' str' sein. Ich würde dringend empfehlen, zuerst eine '__iter__'-Methode zu implementieren und dann' __str__' zu implementieren (Sie könnten '' __str__' im Grunde als 'return '[{}]' implementieren. Format ('' .join (map (str , self))) 'wenn du einen funktionierenden' __iter__' hättest, den du sowieso für eine richtige Sequenz brauchst. – ShadowRanger

+0

Wenn Sie die Schleife behalten wollen, fügen Sie einfach ein 'if' hinzu, das prüft, ob Sie auf dem letzten Element sind, und falls ja, ändert den Parameter 'end' in die leere Zeichenfolge. – Linuxios

Antwort

0

Die Ausnahme sagte __str__ returned non-string. Weil Sie die Darstellung drucken, anstatt sie zurückzugeben. Und Sie können join Funktion verwenden, um Elemente in der Liste mit einem Trennzeichen zu verknüpfen.

def __str__(self): 
    item = self.head 

    items = list() 

    while item: 
     items.append(str(item.get_data())) 
     item = item.get_next()  

    return '[' + ' '.join(items) + ']'  
+0

HALLO, dies ist der Fehler, den ich von oben Code: Sequenz-Element 0: erwartet str Instanz, Knoten gefunden –

+0

@J_lll Ich habe die Antwort aktualisiert. – stamaimer

+0

Vielen Dank es funktioniert !!! Gibt es da noch was, ich kann dich hinzufügen oder dich bei zukünftigen Problemen damit unterhalten? –

Verwandte Themen