我正在尝试制作一个骰子,您可以问您是否要生成一个新的随机数(这个想法来自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()
答案 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()