【问题标题】:Python dequeue oopPython双端队列弹出
【发布时间】:2018-09-08 17:55:48
【问题描述】:

我正在尝试使用一些 OOP 概念来实现一个 python 出队程序。该程序应该在类 Queue 中具有以下方法。 一世。 Queue 类的构造函数 ii.队列的入队方法 iii.队列的出队方法 iv. Queue 类的 is_empty 方法 v. Queue的str方法 最后是使用 Queue 类中的魔术方法正确实现的语句编号 += 15 的方法。以下是我能够实现的。AM 无法实现魔术方法。感谢您的帮助

 class Queue:
 def __init__(self,Numbers):
    self.items=[]

def is_empty(self):
    return self.items == []

def enqueue(self, item):
    self.items.insert(0,item)

def dequeue(self):
    return self.items.pop()
def __str__(self):
    return str(self.items)
 # -----------------------------------------------------

 def main():
  numbers = Queue("Numbers")

print("Enqueue 1, 2, 3, 4, 5")
print("---------------------")
for number in range(1, 6):
    numbers.enqueue(number)
    print(numbers)

print("\nDequeue one item")
print("----------------")
numbers.dequeue()
print(numbers)

print("\nDeque all items")
print("---------------")
while not numbers.is_empty():
    print("Item dequeued:", numbers.dequeue())
    print(numbers)

# Enqueue 10, 11, 12, 13, 14
for number in range(10, 15):
    numbers.enqueue(number)

# Enqueue 15
numbers += 15

print("\n10, 11, 12, 13, 14, 15 enqueued")
print("-------------------------------")
print(numbers)

 # -----------------------------------------------------
 main()

【问题讨论】:

  • 堆栈跟踪还有更多内容。能发全吗?并将其放入代码块中以提高可读性。

标签: python python-3.x python-2.7 oop


【解决方案1】:

您的代码中有 2 个错误。

首先,方法名区分大小写:

while not numbers.is_Empty():

其次,你需要使用enqueue方法而不是+=

# Enqueue 15
numbers.enqueue(15)

【讨论】: