首页 > 解决方案 > (python)具有可变参数的函数

问题描述

如何让以下代码工作,以便分别在玩家分数上执行函数并允许它们累积?(顺便说一句,我对 python 很陌生,所以不要判断)

player_1_score=0
player_2_score=0
def six(score):
    print('you rolled a 6')
    print('''
 -------
| o   o |
| o   o |
| o   o |
 -------   ''')
    score+=6

def five(score):
     print('you rolled a 5')
     print('''
 -------
| o   o |
|   o   |
| o   o |
 -------    ''')
     score+=5

#for player1
five(player_1_score)
six(player_1_score)
print('p1 score:',int(player_1_score))

#for player2
five(player_2_score)
six(player_2_score)
print('p2 score:',int(player_1_score))

代码应显示:运行时玩家得分为 11,但改为显示 0。

标签: pythonfunctionarguments

解决方案


您需要从每个函数返回新分数:

def six(score):
    print('you rolled a 6')
    print('''
 -------
| o   o |
| o   o |
| o   o |
 -------   ''')
    score += 6
    return score

但是呼叫站点需要是这样的:

player_1_score = five(player_1_score)

Ned Batchelder的名字的强制性链接。


推荐阅读