我正在完成MTIx 6.00.1x计算机科学入门课程,但我在创建课程方法时遇到了麻烦。具体来说,我的'Queue'类中的'remove'函数不会像我期望的那样返回值。
以下是请求的上下文:
在本练习中,您将编写第一个类,即Queue类。在Queue类中,您将需要三种方法:
init :初始化你的队列(想一想:你将如何存储队列的元素?你需要在这个方法中初始化一个合适的对象属性)
插入:在您的队列中插入一个元素
删除:从队列中删除(或“弹出”)一个元素并将其返回。如果队列为空,则引发ValueError。
我用'remove'方法编写了以下代码,但是虽然方法的行为正确地改变了数组,但它并没有返回'popped'值:
class Queue(object):
def __init__(self):
self.vals = []
def insert(self, value):
self.vals.append(value)
def remove(self):
try:
self.vals.pop(0)
except:
raise ValueError()
非常感谢任何帮助!
答案 0 :(得分:2)
嗯,在Python中返回相当容易,所以就这样做:
def remove(self):
try:
return self.vals.pop(0)
except:
raise ValueError()
幸运的是,pop()
已经同时删除并返回所选元素。
答案 1 :(得分:0)
您需要使用return
来返回值。将您的删除方法更新为:
def remove(self):
try:
return self.vals.pop(0)
except:
raise ValueError
答案 2 :(得分:0)
您必须明确返回该值:
return self.vals.pop()
另请注意:
list.pop()
方法的参数是可选的; IndexError
,因此您应该只捕获该特定异常而不是每个异常; vals
会员有点私密,所以rename it to start with an underscore; append()
和pop()
方法具有完全必需的行为。