我尝试从堆栈返回5个值并显示出来。请问我怎样才能着手做这件事?你知道吗
附件是我的代码如何解决这个问题。你知道吗
import random
class Stack:
def __init__(self):
self.stack = []
def isEmpty(self):
return self.size() == 0
def push(self, item):
self.stack.append(item)
def peek(self) :
if self.size()>0 :
return self.stack[-1]
else :
return None
def pop(self):
return self.stack.pop()
def size(self):
return len(self.stack)
def randomFive(self):
return self[random.randint(0,len(self)-1)]
list = Stack()
list.push("Tom")
list.push("John")
list.push("Peter")
list.push("Harry")
list.push("Jerry")
for i in range(0, list.size()):
five = list.randomFive()
显示的错误为:
return self[random.randint(0,len(self)-1)]
TypeError: object of type 'Stack' has no len()
错误是由
randomFive
方法中的语句引起的因为} method ,对于用户定义的类^{} built-in function 尝试调用它,如果没有任何实例,则会引发错误(更多信息请参见this thread)。你知道吗
self
是Stack
的一个实例,它没有可用的^{最快的办法就是把它改成
但从长远来看,最好定义自己的
__len__
方法,比如在那之后,您原来的
randomFive
方法应该可以工作了。你知道吗相关问题 更多 >
编程相关推荐