代码之家  ›  专栏  ›  技术社区  ›  ChalzZy

(Python)当循环破坏我的random_数时

  •  1
  • ChalzZy  · 技术社区  · 8 年前

    在很大程度上,它是有效的。但当它再次循环时,它似乎继续滚动相同的数字。

    enter image description here

    正如你所看到的,骰子数一直在滚动。你能看到我的代码出了什么问题吗?

    # Useful module for selecting random numbers
    import random
    
    # Loop program back to here once user presses anything
    loop = 1
    
    #Chooses random number between 1 - 6
    Random_Number = (random.choice([1,2,3,4,5,6]))
    
    while (loop < 10):
        #Printing what the user sees
        print ("===============================")
        print ("Your random dice number is:", Random_Number)
        input("Press any key to roll again")
        print ("===============================")
    
        #looping back to "loop = 1"
        loop = loop + 1
    
    6 回复  |  直到 8 年前
        1
  •  2
  •   Alex Pshenko    8 年前

    您正在生成 Random_Number 有一次,在循环之外。 试试这样的

    while (loop < 10):
        Random_Number = (random.choice([1,2,3,4,5,6]))
        #Printing what the user sees
        print ("===============================")
        print ("Your random dice number is:", Random_Number)
        input("Press any key to roll again")
        print ("===============================")
    
        loop = loop + 1
    
        2
  •  1
  •   Mureinik    8 年前

    这段代码选择一次随机数,然后只打印10次。如果每次需要不同的随机数,则应在循环内移动随机选择:

    while (loop < 10):
        #Chooses random number between 1 - 6
        Random_Number = (random.choice([1,2,3,4,5,6]))
    
        #Printing what the user sees
        print ("===============================")
        print ("Your random dice number is:", Random_Number)
        input("Press any key to roll again")
        print ("===============================")
    
        #looping back to "loop = 1"
        loop = loop + 1
    
        3
  •  1
  •   alexis    8 年前

    您需要了解Python(和类似语言)存储的是值,而不是表达式。如果你写信 a = 2 + 2 ,没有添加和 2 在变量中 a ; 只有数字4。

    你的情况完全一样:你以为你定义了 Random_Number

    你当然可以通过打电话来解决这个问题 random.choice() 在循环中——正如已经提出的大约10个答案。但是做你想做的事 意味 为此,请定义一个函数,以指定的方式选择数字。每次调用函数时都会执行函数体。

    def random_number():
        return random.choice([1,2,3,4,5,6])
    
    while (loop < 10):
        print("you rolled", random_number())
        loop += 1
    
        4
  •  0
  •   user3556757    8 年前

    只需设置一次Random_Number的值,然后在每个循环中显示该值。

    固定的

    # Useful module for selecting random numbers
    import random
    
    # Loop program back to here once user presses anything
    loop = 1
    
    #Chooses random number between 1 - 6
    #Random_Number = (random.choice([1,2,3,4,5,6]))
    
    while (loop < 10):
        #Printing what the user sees
        print ("===============================")
        print ("Your random dice number is:", (random.choice([1,2,3,4,5,6])))
        #input("Press any key to roll again")
        print ("===============================")
    
        #looping back to "loop = 1"
    
        5
  •  0
  •   Łukasz Szczesiak    8 年前

    因为你只生成一次随机数。 应该是这样的

    ...
    while (loop < 10):
        Random_Number = (random.choice([1,2,3,4,5,6]))
    ....
    

    也不要用大写字母命名变量,而使用Random\u数

        6
  •  0
  •   Laurentourte    8 年前

    如果不想在每次迭代时重新定义随机数:

    # Useful module for selecting random numbers
    import random
    
    # Loop program back to here once user presses anything
    loop = 1
    
    #Chooses random number between 1 - 6
    Random_Number = lambda : random.choice([1,2,3,4,5,6])
    
    while (loop < 10):
        #Printing what the user sees
        print ("===============================")
        print ("Your random dice number is:", Random_Number())
        print ("===============================")
    
        #looping back to "loop = 1"
        loop = loop + 1