-3

コードに問題があります。str属性がないと言われていますtop..このプログラムの意味は、リンクされたリストを使用することであり、値を入れようとするとputエラーが発生します..

class LinkedQ(object):
    def __init__(self):
        self.top = None

    def __str__(self):
            s = ""
            p = self.first
            while p != None:
                s = s + str(p.value)
                p = p.next
            return s

    def put(self):
        ny = Node(x)
        ny.next = self.top
        self.top = ny

    def get(self):
        x = self.top.value
        self.top = self.top.next
        return x

    def isEmpty(self):
        if self.top == None: 
            return True
        else:
            return False

class Node:
   def __init__(self, x):
      self.value = x
      self.next = None

row = input("Write line of numbers (1 2 3 4): ")
row_pi = row.split()
for i in row_pi:
      LinkedQ.put(i)
4

1 に答える 1

2

putメソッドはパラメーターを取りませんが、本体内でxローカル変数を使用しようとします。xおそらく、コードの最後の行でメソッドに渡す値を使用することを意味します。つまり、メソッドには署名が必要です。

def put(self, x):

ただし、別の問題があります。クラスでメソッドを呼び出そうとしています:

LinkedQ.put(i)

インスタンスメソッドの場合。インスタンス メソッドを呼び出す前に、クラスのオブジェクトをインスタンス化する必要があります。

some_linked_q = LinkedQ()
for i in row_pi:
    some_linked_q.put(i)

他にもいくつか問題がありますが、これにより、少なくとも質問で言及したエラーが修正されます。(どこにも定義していない、使用している変数を探します...)

于 2013-09-17T11:13:37.033 に答える