如何将随机数生成与以python打印的项目连接



我在下面使用此代码来连续生成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,它将破坏。

堆栈数据结构的示例

  1. 玛丽
  2. 彼得
  3. 鲍勃
  4. 约翰

我正在使用的堆栈代码是

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__方法中。

最新更新