有没有办法使一个函数从同一个变量中两次获得一个随机数

时间:2020-09-03 02:32:30

标签: python

我正在尝试制作一个骰子,您可以问您是否要生成一个新的随机数(这个想法来自https://knightlab.northwestern.edu/2014/06/05/five-mini-programming-projects-for-the-python-beginner/

第一次运行有效,但不会生成新数字,但会打印相同的数字。有办法吗?

我的代码:

import random
number = random.randint(1,6)
def rollDie():
    print(number)
    answer = input("Do you want to roll the die again? Answer with Y or N")
    if answer == "Y":
        rollDie()
    elif answer == "N":
        print("bye!")

rollDie()

2 个答案:

答案 0 :(得分:4)

在我看来,更麻烦的问题是在这种情况下使用递归。无论是在这种情况下,还是作为错误处理机制,我都经常在初学者的Python代码中看到它,并且教新的程序员是一个不好的模式。这应该通过一个简单的循环来处理:

errors

与其以递归方式再次调用import random def rollDie(): while True: number = random.randint(1, 6) print(number) answer = input("Do you want to roll the die again? Answer Y or N: ") if answer.upper() == 'N': print("Bye!") break rollDie()

答案 1 :(得分:2)

您的代码存在的问题是number仅定义了一次。 number是一个整数,并且整数是不可变的,因此,除非您重新定义该变量,否则其值将永远不变。

为了完成掷骰子的模拟,请将number = random.randint(1,6)从代码的顶部重新定位到函数的内部:

发件人:

import random

number = random.randint(1,6)
def rollDie():
    print(number)
    answer = input("Do you want to roll the die again? Answer with Y or N")
    if answer == "Y":
        rollDie()
    elif answer == "N":
        print("bye!")

rollDie()

收件人:

import random

def rollDie():
    number = random.randint(1,6)
    print(number)
    answer = input("Do you want to roll the die again? Answer with Y or N")
    if answer == "Y":
        rollDie()
    elif answer == "N":
        print("bye!")

rollDie()
相关问题