class Stack:
def __init__(self):
self.container = []
def isEmpty(self):
return self.size() == 0
def push(self, item):
self.container.append(item)
def peek(self) :
if self.size()>0 :
return self.container[-1]
else :
return None
def pop(self):
return self.container.pop()
def size(self):
return len(self.container)
s = Stack()
s.isEmpty()
s.push("Cat")
s.push("Dog")
s.push("Horse")
s.push("Snake")
s.push("Lion")
s.push("Fish")
s.push("Bear")
s.push("Tiger")
这些是我使用堆栈的代码。我在尝试提出一种代码时遇到问题,该代码只能使用堆栈数据结构来随机生成8种动物中的3种作为输出。
输出示例:
Dog
Snake
Tiger
答案 0 :(得分:0)
一次生成所有索引,然后一一弹出元素并将其输出到索引位置:
import random
sample = random.sample(range(s.size()), 3)
for i in range(s.size()):
if i in sample:
print(s.pop())
else:
s.pop()
编辑(通过评论回复后续问题):
要选择三个所选动物中的一个,请将它们中的每一个推入第二个堆栈的第一个循环中。在第二个循环中,重复相同的过程,仅更改参数(从3中选择1而不是8中选择3):
import random
sample = random.sample(range(s.size()), 3)
s2 = Stack()
for i in range(s.size()):
if i in sample:
animal = s.pop()
s2.push(animal)
print(animal)
else:
s.pop()
index = random.randint(0, s2.size() - 1)
for i in range(s2.size()):
if i == index:
animal = s2.pop()
print(animal)
else:
s2.pop()
答案 1 :(得分:0)
您可以设置一个随机数作为要执行的pop()
操作次数
import random
for i in range(3):
rand = random.randint(0, s.size()-(3-i)) # maximum number of pop is the length of stack - (3-i)
for j in range(rand-1): # pop rand-1 times
s.pop()
print(s.pop())