【问题标题】:Return and Assignment Issue退货和转让问题
【发布时间】:2020-01-29 01:09:20
【问题描述】:

我对编码还是比较陌生。我目前在从函数返回值时遇到问题。基本思想是玩家和敌人掷 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)

我遇到的问题是 roll_one_dmg_to_player 和 roll_one_dmg_to_enemy 的值在值上不断匹配。如果我要运行这个示例,我希望代码打印的结果是“2”和“0”。但相反,它返回“2”和“2”。我究竟做错了什么?感谢您的帮助。

【问题讨论】:

    标签: python function return


    【解决方案1】:

    你不能有双重返回语句,第二个永远不会到达

    改变这个

    return roll_one_dmg_to_player
    return roll_one_dmg_to_enemy
    

    到这个 return (roll_one_dmg_to_player, roll_one_dmg_to_enemy)

    那么你的函数调用应该是这样的

    roll_one_dmg_to_player, roll_one_dmg_to_enemy = dmg_calculator_by_dice_roll(player_highest_roll_one, enemy_highest_roll_one)
    

    这会给你一个元组

    【讨论】:

    • 这是一个非常清晰简洁的答案。你的建议奏效了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-11-20
    • 2014-06-10
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    相关资源
    最近更新 更多