掷骰子并定义 dmg_to_enemy

Dice rolls and defining dmg_to_enemy

我在此函数中定义 dmg_to_enemy 时遇到问题。我想如果我使用 random.randint 在函数内定义 dmg_to_enemy,然后使用 return 我就可以在函数外打印它。目前,当我 运行 这个代码时它 returns 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

变量dmg_to_enemy在其父函数中是local,在它之外不存在。您似乎部分意识到这一点,因为您只有一行 return dmg_to_enemy,尽管它的缩进级别意味着它只会 return 在该条件触发时 (dwarf_class == "Civilian") 有用的结果。降低缩进级别以使该部分起作用。

另一半是使用那个returned值,这就和

一样简单
dmg_to_enemy = dice_rolls_combat(dwarf_class)

尽管您可以使用任何其他变量名称 – 此变量与本地其他地方使用的变量无关。