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 に答える