我在下面使用此代码来连续生成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)
但是,我不确定如何从这里
i think think 这就是您想要的。它从1-10产生一个随机数并打印数字。除非数字大于8(9或10) - (如问题所示),它可以无限地执行此操作。当数字等于3时,方法printItem
被调用(可以更改)。该方法具有一个称为run
的非自动参数(可以重命名)。这就是更改打印名称的原因。它按堆栈的顺序打印名称 - 首先打印出最后一项 - 如果不是您想要的顺序,则可以随时更改此名称。run
用作Stack
的索引,每次调用该方法时都会从中减去。这是代码,您可以尝试:
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__
方法中。