我使用下面的代码连续生成1到10之间的数字,直到它停止前生成9或10
import random
while True:
rand = random.randint(1, 10)
print(rand)
if rand > 8:
break
https://stackoverflow.com/a/47477745/9003921
我想显示另一个项目,如果它生成一个从1到8的数字,例如,如果它生成数字3我希望它从堆栈数据结构按顺序打印出一个名称。如果它产生数字9或10,它将会中断。
堆栈数据结构的一个例子
我使用的堆栈代码是
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)
但是,我不确定如何从这里开始
请帮忙
答案 0 :(得分:0)
我 认为 这就是你想要的。它从1-10生成一个随机数并打印该数字。它无限地执行此操作,除非数字大于8(9或10) - (如问题中所示)。当数字等于3(可以更改)时,调用方法printItem
。此方法有一个名为run
的非自身参数(可以重命名)。这是更改名称的内容。它按照堆栈的顺序打印名称 - 最后打印的项目 - 如果不是您想要的订单,您可以随时更改此项目。 run
用作Stack
的索引,每次调用该方法时都会减去一个。{1}}。这是代码,您可以尝试一下:
import random
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)
def printItem(self, run):
print(self.container[run]) # Prints last item/name
# The stack is called 'Names'
Names = Stack()
# Adds names to the stack
Names.push('Mary')
Names.push('Peter')
Names.push('Bob')
Names.push('John')
Names.push('Kim')
# sets run to -1 (last (first) item in stack)
run = -1
while True:
rand = random.randint(1, 10)
print(rand)
if rand > 8:
break
elif rand == 3:
# Calls printItem with run as parameter
Names.printItem(run)
run-=1 # Subtracts one from run
# Sets run to -1 again if all names have been printed
if run<(-1*Names.size()):
run = -1
我希望这有帮助!
仅供参考,如果您希望run
成为特定于对象的变量,您只需将其添加到Stack的__init__
方法中。