【发布时间】:2019-04-26 14:10:45
【问题描述】:
我正在尝试从堆栈中返回 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()
【问题讨论】:
-
尽量不要覆盖像
list这样的内置对象的名称 -
还有
self[random.randint(0,len(self)-1)]可能应该是self[random.randint(0,len(self.stack)-1)]或者你应该定义__len__方法 -
我已经尝试了这两种方法,但仍然有一个错误,上面写着
return(self[random.randint(0,len(self.stack)-1)]) AttributeError: 'Stack' object has no attribute 'stack
标签: python python-3.x random stack