0

我正在尝试创建具有以下特征的函数;

函数名称:new_scores,

参数:(p1_score,p2_score,current_score,current_player)

p1_score:用户输入的玩家 1 分,

p2_score:用户输入的玩家 2 得分,

current_score:执行任何动作后设置玩家的当前得分

current_player:“PLAYER_ONE”或“PLAYER_TWO”

我的代码的问题在于它在所有情况下都不起作用,例如尝试替换 PLAYER_ONE 中的值,它只会吐出我输入的 p1_score 和 p2_score。谢谢您的帮助

def new_scores(p1_score,p2_score,current_score,current_player):
    if current_player == 'PLAYER_ONE':
        p1_score = current_score
        return (p1_score,p2_score)
    elif current_player == 'PLAYER_TWO':
        p2_score = current_score
        return (p1_score,p2_score)
4

2 回答 2

2

你的代码是不必要的复杂,这对于这么几行来说是相当了不起的壮举。:) 分配没有意义,直接返回预期的数据:

def new_scores(p1_score, p2_score, current_score, current_player):
   if current_player == 'PLAYER_ONE':
      return (current_score, p2_score)
   elif current_player == 'PLAYER_TWO':
      return (p1_score, current_score)

不过,您的代码看起来是正确的。验证参数是否正确,使用字符串表示这样的语义有点容易出错。

于 2012-10-19T12:30:24.533 回答
0

确保您使用的是返回值,并且不期望您传入的参数会被更改为副作用。

>>> new_scores(3, 4, 5, "PLAYER_ONE")
(5, 4)
>>> new_scores(3, 4, 7, "PLAYER_TWO")
(3, 7)

如上所述运行您的函数表明它按预期工作

于 2012-10-19T12:42:22.287 回答