Python3: Как вернуть oop мою программу ролика костей к началу - PullRequest
0 голосов
/ 04 августа 2020

Написал свою первую сольную программу без помощи учителя или группы, простой код, который может действовать как ролик D&D для любого типа или количества игральных костей, требуемых пользователем.

Я работал над это примерно на четыре часа, и я застрял на последнем, что я хочу сделать, а именно на l oop это вернуться к началу, а не просто закончить, когда пользователь не перебрасывает уже выбранные кости, я бы хотел Это значит, что она начинается снова сверху, чтобы игрок мог ввести новое значение кубика и количество сгенерированных бросков, не закрывая программу и не запуская ее повторно.

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

1 Ответ

1 голос
/ 04 августа 2020

Вы можете попробовать что-то вроде:

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», поскольку они являются зарезервированными ключевыми словами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...