【发布时间】:2015-03-30 17:03:42
【问题描述】:
“编写一个名为 stutter 的函数,它接受一个整数队列作为参数,并将队列中的每个元素替换为原始队列中该元素的两个副本。”
例子:
q1 = Queue()
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
stutter(q1)
while not queue.isempty():
print(queue.dequeue(), end=' ')
应该给出“1 1 2 2 3 3”的答案
class Queue:
def __init__(self):
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 size(self):
return len(self.items)
def check_empty(self):
if self.items == []:
return True
def stutter(Q):
queue=Queue()
stack = Stack()
while not queue.isempty():
stack.push(queue.dequeue())
while not stack.isempty():
queue.enqueue(stack.pop())
那是我写的代码,我可以让它打印一次,一次,我不能让它复制并按顺序排序。
【问题讨论】:
-
您正在将参数传递给 stutter 函数(其中包含 1 2 3),但随后不使用它。该参数在调用代码中称为 q1,在 stutter 函数中称为 Q。因为你没有在 stutter 函数中对 Q 做任何事情(你创建了一个新的队列,它将是空的),所以在你返回函数之后打印 q1 不出所料地在函数被调用之前返回 q1 的值。这是对函数工作原理的一个非常根本的误解,您可能需要在提出问题之前进行更多研究(例如阅读教科书,如果有的话)。