2017-05-13 17 views
0

最後のスペースを取り除く方法がわかりません。だれかが私のコードに何をすればいいのか教えてください。 おかげ期待最後のスペースを取り除く

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 

:8 7 6 3 5]

ガット:8 7 6 3 5]

+7

画像を使用しないでください。質問にコードをコピーしてください。 – MSeifert

+3

'__str__'は' print'してはいけません。 'str'を構築して'返す 'べきです。最初に '__iter__'メソッドを実装してから、' __str__'を 'return '[{}]として実装することを強く推奨します。 、self))) 'もしあなたが機能している' __iter__'を持っていれば、あなたは正しいシーケンスのために必要です)。 – ShadowRanger

+0

ループを維持したい場合は、最後の要素にいるかどうかをテストする 'if'を追加します。もしそうであれば、' end'パラメータを空の文字列に変更します。 – Linuxios

答えて

0

例外が__str__ returned non-string述べました。代わりにリプレゼンテーションを印刷するからです。また、join関数を使用して、リスト内の項目をセパレータと連結することができます。

def __str__(self): 
    item = self.head 

    items = list() 

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

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

こんにちは、これは私が上記のコードから得たエラーです:シーケンスアイテム0:期待strインスタンス、ノードが見つかりました –

+0

@J_lll私は答えを更新しました。 – stamaimer

+0

ありがとうございました!とにかく私はあなたを追加したり、将来の問題のためにこれについてチャットしてもらえますか? –

関連する問題