class QueueError(IndexError):
pass
class Queue:
def init(self):
self.queue = []
def put(self, elem):
self.queue.insert(0, elem)
def get(self):
if len(self.queue) > 0:
elem = self.queue[-1]
del self.queue[-1]
return elem
else:
raise QueueError
que = Queue()
que.put(1)
que.put("dog")
que.put(False)
try:
for i in range(4):
print(que.get())
except:
print("Queue error")
output:
1
dog
False
Queue error
在def get(self)函数里,我没有用if-else statement,
直接 elem = self.queue[-1]
del self.queue[-1]
return elem
然后class QueueError(IndexError): 我也没有写
pass
最后output也可以出来1
dog
False
Queue error
请问写class和if-else statement是不是多此一举
写class和if-else statement不是多此一举
if len(self.queue) > 0: 是判断栈是不是为空,为空时发出QueueError错误,明确表示触发了一个Queue的错误
你不写if len(self.queue) > 0: 判断栈,当self.queue栈为空时 self.queue[-1]会触发IndexError: list index out of range错误
虽然也可以用try except捕获但意义就不一样了
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!