Почему «оператор if» с числами в операторе if не работает, не работает и просто останавливается после оператора в python 3.7.2? - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь сделать скрипт на python, чтобы сделать случайные кости плюс числа и случайные кости, которые могут увеличить количество брошенных костей. Подумайте D & D 5e.

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

    rolls = 2
    critrolls = 4
    FDMG = 6
    DMG = 0
    Tohit = random.randrange(12, 32)
            if Tohit == "31":
                while str(critrolls) > str(0):
                    DMG = random.randrange(1, 9)
                    FDMG = FDMG + DMG
                    rolls = int(critrolls) - 1
                print("Your to hit is", Tohit)
                print("Your Damage is", FDMG)
            elif Tohit <= 30:
                while str(rolls) > str(0):
                    DMG = random.randrange(1, 9)
                    FDMG = FDMG + DMG
                    rolls = int(rolls) - 1
                print("Your to hit is", Tohit)
                print("Your Damage is", FDMG)

Я хочу, чтобы он мог на основе числа из переменной Tohit контролировать количество брошенных костей. Идея в том, что на 31 броске он бросит 4 кубика вместо 2.

1 Ответ

1 голос
/ 11 мая 2019

Tohit = random.randrange(12, 32) назначает Tohit целому числу, но вы выполняете сравнение строк в if Tohit == "31":, меняете его на Tohit==31, и код должен работать:)

Кроме того, вы хотели бы изменить while str(rolls) > str(0): на while rolls > 0 и y, чтобы сделать его целочисленным или целочисленным сравнением, аналогично измените while str(critrolls) > str(0) на while critrools > 0

Также ваш while critrools > 0 представляет собой бесконечный цикл, поскольку critrolls = 2 и 2>0 приведут к бесконечному циклу, поскольку вы никогда не меняете значение critrolls, вам необходимо обновить его в цикле, возможно, выполните critrolls = critrolls - 1

Учитывая все эти изменения, ваш обновленный код может выглядеть как

import random
rolls = 2
critrolls = 4
FDMG = 6
DMG = 0
Tohit = random.randrange(12, 32)

#Change to int to int comparison
if Tohit == 31:
    # Change to int to int comparison
    while critrolls > 0:
        DMG = random.randrange(1, 9)
        FDMG = FDMG + DMG
        #Perhaps you need to decrement critrolls here to break infinite loop
        # Change to int to int operation by removing int typecast
        critrolls -= 1
    print("Your to hit is", Tohit)
    print("Your Damage is", FDMG)
elif Tohit <= 30:
    # Change to int to int comparison
     while rolls > 0:
        DMG = random.randrange(1, 9)
        FDMG = FDMG + DMG
        # Change to int to int operation by removing int typecast
        rolls -= 1
     print("Your to hit is", Tohit)
     print("Your Damage is", FDMG)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...