首页 > 解决方案 > 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

标签: python-3.xrestart

解决方案


您可以尝试以下方法:

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”,因为它们是保留关键字


推荐阅读