Python 返回和分配问题

Python 返回和分配问题,python,function,return,Python,Function,Return,我对编码还是比较陌生的。我目前在从函数返回值时遇到问题。其基本思想是,玩家和敌人掷4个骰子。我已经设置了一个数组,将玩家和敌人的骰子从最高值排序到最低值。从这里开始,我想让玩家的最高值骰子从敌人的最高值骰子中减去,每个掷骰对(即,玩家的第一个骰子-敌人玩家的第一个骰子或敌人的第一个骰子-玩家的第一个骰子)。我想用这个公式来确定对玩家或敌人造成的伤害。我提出的代码是: def dmg_calculator_by_dice_roll(player_highest_roll_one, enemy_hi

我对编码还是比较陌生的。我目前在从函数返回值时遇到问题。其基本思想是,玩家和敌人掷4个骰子。我已经设置了一个数组,将玩家和敌人的骰子从最高值排序到最低值。从这里开始,我想让玩家的最高值骰子从敌人的最高值骰子中减去,每个掷骰对(即,玩家的第一个骰子-敌人玩家的第一个骰子或敌人的第一个骰子-玩家的第一个骰子)。我想用这个公式来确定对玩家或敌人造成的伤害。我提出的代码是:

def dmg_calculator_by_dice_roll(player_highest_roll_one, enemy_highest_roll_one):
        if player_highest_roll_one > enemy_highest_roll_one:
            roll_one_dmg_to_enemy = (enemy_highest_roll_one - player_highest_roll_one) * -1
            roll_one_dmg_to_player = 0
            return roll_one_dmg_to_player
            return roll_one_dmg_to_enemy
        elif player_highest_roll_one < enemy_highest_roll_one:
            roll_one_dmg_to_player = (player_highest_roll_one - enemy_highest_roll_one) * -1
            roll_one_dmg_to_enemy = 0
            return roll_one_dmg_to_player
            return roll_one_dmg_to_enemy 
        else:
            roll_one_dmg_to_player = 0
            roll_one_dmg_to_enemy = 0
            return roll_one_dmg_to_player
            return roll_one_dmg_to_enemy

player_rolls_round_one = [8, 6, 2, 1]
enemy_rolls_round_one = [6, 2, 2, 1]
player_highest_roll_one = player_rolls_round_one[0]
enemy_highest_roll_one =  enemy_rolls_round_one[0] 
roll_one_dmg_to_player = dmg_calculator_by_dice_roll(player_highest_roll_one, enemy_highest_roll_one)
roll_one_dmg_to_enemy = dmg_calculator_by_dice_roll(player_highest_roll_one, enemy_highest_roll_one)   
dmg_calculator_by_dice_roll(player_highest_roll_one, enemy_highest_roll_one)


print(roll_one_dmg_to_enemy)
print(roll_one_dmg_to_player)
def dmg计算器按骰子掷骰(玩家掷骰最高,敌人掷骰最高):
如果玩家最高掷骰一次>敌人最高掷骰一次:
掷骰给敌人=(敌人最高掷骰-玩家最高掷骰)*-1
掷一个dmg到玩家=0
将掷骰返回给玩家
将掷骰返回给敌人
elif玩家最高掷骰一次<敌人最高掷骰一次:
掷骰给玩家=(玩家最高掷骰-敌人最高掷骰)*-1
掷一个dmg到敌人=0
将掷骰返回给玩家
将掷骰返回给敌人
其他:
掷一个dmg到玩家=0
掷一个dmg到敌人=0
将掷骰返回给玩家
将掷骰返回给敌人
玩家掷骰一轮=[8,6,2,1]
敌人掷骰一轮=[6,2,2,1]
玩家最高掷骰一次=玩家掷骰一轮[0]
敌方最高掷骰一次=敌方掷骰一轮[0]
掷骰子掷骰(玩家掷骰最高,敌人掷骰最高)
掷骰子掷骰(玩家掷骰最高,敌人掷骰最高)
dmg计算器按骰子掷骰(玩家掷骰最高,敌人掷骰最高)
打印(滚动至敌人)
打印(将dmg滚动到播放器)

我遇到的问题是,roll_one_dmg_to_玩家和roll_one_dmg_to_敌人的价值不断匹配。如果我运行这个示例,我希望代码打印的结果是“2”和“0”。但它却返回“2”和“2”。我做错了什么?谢谢您的帮助。

您不能有双返回语句,第二个语句永远无法到达

改变这个

return roll_one_dmg_to_player
return roll_one_dmg_to_enemy
对此
返回(向玩家掷一个dmg,向敌人掷一个dmg)

那么您的函数调用应该如下所示

roll_one_dmg_to_player, roll_one_dmg_to_enemy = dmg_calculator_by_dice_roll(player_highest_roll_one, enemy_highest_roll_one)

这将给你一个元组

,这是一个非常清晰简洁的答案。你的建议奏效了。非常感谢。