2017-03-18 1 views
0

私はオブジェクト指向プログラミングとこのサイトで初めてです。二重リンクリスト実装が機能しない

私はかなり長い間(または少なくとも私がしようとしている)大学プロジェクトのためにこのプログラムに取り組んできました。

  • class Node
  • class LinkedList
  • 様々な方法:私は、私は次のようなものを実装する必要があり、より正確には、二重リンクリストを扱うプログラムを作成する必要があります。

これは私のコードは、これまでのように見えるものです:私は出力があることを期待したい

class Node: 
    def __init__(self): 
     self.value = None 
     self.next_node = None 
     self.previous_node = None 

class LinkedList(object): 
    def __init__(self): 
     self.first = None 
     self.last = None 

    def __str__(self): 
     return 'This is the value: '.format(self.first) 

    def append(self, value): 
     new_node = Node() 
     self.first = new_node 

def main(): 
    myList = LinkedList() 
    myList.append(20) 
    print(myList) 

"This is the value: 20"

しかし、出力は"This is the value: "です。

私の間違いは何ですか?私のappendメソッドまたは私の__str__メソッドは、正しく動作しません(またはどちらも動作しません)。

+1

あなたは、あなたのappendメソッドで値を使用していません。 –

+1

[** _小さなプログラムのデバッグ方法_ **](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)をお読みになることをお勧めします。 – martineau

答えて

2

{}を文字列に追加して、値をどこに置くかを指示します。

def __str__(self): 
    return 'This is the value: {}'.format(self.first) 

string format examplesのPythonドキュメントを参照してください。

@ Jeremyのコメントでは、新しいノードに値を割り当てて、str()関数をNodeクラスに追加する必要もあります。

これは動作するはずです:

class Node: 
    def __init__(self, value=None): 
     self.value = value # <- store the value in the object 
     self.next_node = None 
     self.previous_node = None 

    def __str__(self):    # <- return the value as a string 
     return str(self.value) 

class LinkedList(object): 
    def __init__(self): 
     self.first = None 
     self.last = None 

    def __str__(self): 
     return 'This is the value: {}'.format(self.first) 

    def append(self, value): 
     new_node = Node(value) # <- pass value to the Node 
     self.first = new_node 
main() 
    myList = LinkedList() 
    myList.append(20) 
    print(myList) 
+0

すでに助けていただきありがとうございます。私は{}を追加しましたが、次の出力を得ました: 'これは値です:<__ main __。0x00521C90のノードオブジェクト> どうすればそのオブジェクトの実際の内容を取得できますか? – Quinlin

+0

これについて私の更新された回答を見て、それがあなたの問題を解決した場合に受け入れてください。 – Craig

+0

働いて、ありがとう、Craig! – Quinlin

関連する問題