我正在尝试制作一个骰子,您可以询问您是否要生成一个新的随机数(这个想法来自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()
Run Code Online (Sandbox Code Playgroud)
从我的角度来看,更麻烦的问题是在这种情况下使用递归。在这种情况下,我经常在初学者 Python 代码中看到它,或者作为一种错误处理机制,这是教新程序员的一种不好的模式。这应该用一个简单的循环来处理:
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()
Run Code Online (Sandbox Code Playgroud)
而不是rollDie()递归调用。