0
比較的新しいPythonプログラマとして、私は最近、クラスとサブクラスを使用してエンキューとデキューをエミュレートしようとしました。現在、私のコードの読み取りに加えて、実行の試みを読み取りますサブクラスを使用したPythonエンキューとデキューエミュレーション
はAttributeError:「NoneType」オブジェクトはありませんがありますが、私が理解できるものから、
class queue:
class node:
def __init__(self, value, nextNode):
self.value = value
self.nextNode = nextNode
def __init__(self):
self.top = None
self.last = None
self.size = 0
def __len__(self):
return self.size
def enqueue(self, value):
#This creates an extra node with "value" and inserts at the top
newNode=queue.node(value,None)
if self.size ==0:
self.top=newNode
self.last=self.top
self.size+=1
else:
self.last.nextNode=newNode
self.last=newNode
self.size+=1
def dequeue(self):
#This returns self.top.value and at the same time deletes the top
node.
if self.size ==0:
return "error: dequeue from an empty queue"
elif self.size == 1:
val=self.top.value
nxt=self.top.nextNode
self.top=None
self.last=None
else:
val=self.top.value
nxt=self.top.nextNode
self.top=nxt
return val
q = queue()
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
q.enqueue(4)
x=q.dequeue()
output = []
while len(q)>0:
x = q.dequeue()
output.append(x)
print(output)
#This should show [2, 3, 4]
を、現在私が受け取ると、私の主な問題は、値を返します属性 '値'
私は実行しようとします。問題がどこにあるのかを誰かが明確にすることができれば、大いに感謝しています。
うわー、私はそれを逃したとは思わない。私はデキュー・ステートメントでself.size- = 1を投げたが、確かにそれは魅力のように機能する!それを指摘してくれてありがとう! –
マイケルに問題はありません。しかし、他のすべてのものといい仕事。私はちょうど2つの行に落ちた、それは私の側に魅力のように働いた。 – Kyle