在Python中实现队列-两个isempty()方法给出不同的答案
我正在做一些基本的Python编程练习,并尝试实现一个队列(使用列表)。不幸的是,我得到的isempty()函数的行为我不理解。当运行下面的代码时,最后两行给出了不同的答案:A产生False,而B产生True。为什么A也不产生错误在Python中实现队列-两个isempty()方法给出不同的答案,python,python-3.x,oop,queue,Python,Python 3.x,Oop,Queue,我正在做一些基本的Python编程练习,并尝试实现一个队列(使用列表)。不幸的是,我得到的isempty()函数的行为我不理解。当运行下面的代码时,最后两行给出了不同的答案:A产生False,而B产生True。为什么A也不产生错误 class Queue: def __init__(self): self.items = [] def push(self,item): self.items.insert(0,item) def pop(self): re
class Queue:
def __init__(self):
self.items = []
def push(self,item):
self.items.insert(0,item)
def pop(self):
return self.items.pop()
def size(self):
return len(self.items)
def isempty(self):
return self.size == 0
q = Queue()
q.push("a")
q.push("b")
print(q.pop())
print(q.isempty())
print(q.pop())
print(q.isempty()) # shouldn't this (A)...
print(q.size()==0) # ...and this (B) yield the same answer?
只需将您的
isempty()
方法更改为:
def isempty(self):
return self.size() == 0
只需将您的
isempty()
方法更改为:
def isempty(self):
return self.size() == 0
Queue.isempty()
的实现正在检查方法size
是否等于整数0
,该值永远不会为真
class Queue:
def __init__(self):
self.items = []
def push(self,item):
self.items.insert(0,item)
def pop(self):
return self.items.pop()
def size(self):
return len(self.items)
def isempty(self):
return self.size == 0
q = Queue()
print(q.size)
产生:
最简单的解决方案是使用Christopher Shroba的建议修改
队列。isempty()
实现以使用列表的大小方法。您的队列的实现。isempty()
正在检查方法大小
是否等于整数0
,这永远不会是真的
class Queue:
def __init__(self):
self.items = []
def push(self,item):
self.items.insert(0,item)
def pop(self):
return self.items.pop()
def size(self):
return len(self.items)
def isempty(self):
return self.size == 0
q = Queue()
print(q.size)
产生:
最简单的解决方案是使用Christopher Shroba的建议修改
队列.isempty()
实现以使用列表的大小方法。self.size
是一种方法self.size()。考虑使用“代码>入队< < /代码>和>代码>去队列< /代码>。<代码> Survivs/Cuth>是一种方法。code>self.size()。考虑使用“代码>入队< <代码> > >代码>去队列< /代码>。我很高兴!如果这里的答案解决了你的问题,如果你不介意,请将其标记为已接受:)我的荣幸!如果此处的答案解决了您的问题,如果您不介意,请将其标记为已接受:)