Бросок костей и определение dmg_to_enemy - PullRequest
0 голосов
/ 19 января 2020

У меня проблема с определением dmg_to_enemy в этой функции. Я подумал, что если бы я использовал random.randint для определения dmg_to_enemy внутри функции, а затем использовал return, я смог бы распечатать его вне функции. В настоящее время, когда я запускаю этот код, он возвращает dmg_to_enemy is not defined. Мне нужно иметь возможность определить его, чтобы я мог использовать его для других функций. Я относительно новичок в кодировании и хотел бы знать, что я делаю неправильно.

dwarf_class = "Thane"
def dice_rolls_combat(dwarf_class):  
    if dwarf_class == "Thane":
        dmg_to_enemy = random.randint(1, 8)
        return dmg_to_enemy
    elif dwarf_class == "Mekanik":
        dmg_to_enemy = random.randint(1, 5)
        return dmg_to_enemy
    elif dwarf_class == "Ancestrite":
        dmg_to_enemy = random.randint(1, 3)
        return dmg_to_enemy
    elif dwarf_class == "Prisoner":
        dmg_to_enemy = random.randint(1, 5)
        return dmg_to_enemy
    elif dwarf_class == "Civilian":
         dmg_to_enemy = random.randint(1, 4)
         return dmg_to_enemy
dice_rolls_combat(dwarf_class) #outside of function
print(dmg_to_enemy) # outside of the function

1 Ответ

0 голосов
/ 19 января 2020

Переменная dmg_to_enemy равна local в своей родительской функции и не существует вне ее. Вы, кажется, частично знаете об этом, поскольку у вас есть одна строка return dmg_to_enemy, хотя уровень отступа означает, что он вернет полезный результат только при выполнении этого условия (dwarf_class == "Civilian"). Уменьшите уровень отступа, чтобы заставить эту часть работать.

Другая половина - с использованием возвращаемого значения. Это так же просто, как

dmg_to_enemy = dice_rolls_combat(dwarf_class)

, хотя вы можете использовать любой Имя другой переменной - эта переменная не связана с теми, которые используются в других местах.

...