python-3.x - Python3:如何将我的掷骰子程序循环回到起点
问题描述
在没有老师或小组帮助的情况下编写我的第一个单独程序,一个简单的代码可以充当用户需要的任何类型或数量的骰子的 D&D 骰子滚轮。
我已经为此工作了大约四个小时,并且我坚持要做的最后一件事是将它循环回到开头,而不是在用户不重新滚动已经选择的骰子时结束,我'希望它从顶部重新开始,这样玩家就可以输入新的骰子值和生成的掷骰数,而无需关闭程序并重新运行它。
import random
try:
min = 1
max = int(input("Enter the highest value of dice to be rolled: "))
except:
print("Your input was invalid, program rolled a d20 by default")
min = 1
max = 20
again = True
number_of_dice = int(input("Enter number of dice to roll: "))
for i in range(number_of_dice - 1):
print(random.randint(min, max))
while again:
print(random.randint(min, max))
reroll = input("Roll again? (y/n): ")
if reroll.lower() == "y" or reroll.lower() == "yes":
for i in range(number_of_dice - 1):
print(random.randint(min, max))
else:
print("Thank you")
break
解决方案
您可以尝试以下方法:
import random
while True:
try:
min = 1
max = int(input("Enter the highest value of dice to be rolled or 0 to exit: "))
except:
print("Your input was invalid, program rolled a d20 by default")
min = 1
max = 20
if max == 0:
break
if max < 0:
continue
again = True
number_of_dice = int(input("Enter number of dice to roll: "))
for i in range(number_of_dice - 1):
print(random.randint(min, max))
while again:
print(random.randint(min, max))
reroll = input("Roll again? (y/n): ")
if reroll.lower() == "y" or reroll.lower() == "yes":
for i in range(number_of_dice - 1):
print(random.randint(min, max))
else:
print("Thank you")
break
另外,我建议重命名“min”和“max”,因为它们是保留关键字