如何将随机数生成连接到要在python中打印的项目

时间:2017-11-24 17:43:03

标签: python-3.x random stack push pop

我使用下面的代码连续生成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. 约翰
  5. 我使用的堆栈代码是

    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)
    

    但是,我不确定如何从这里开始

    请帮忙

1 个答案:

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