(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。

WY190521 回答:(python)具有可变参数的函数

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

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强制链接到names

,

您可以单独更新分数,即不在“掷骰子”功能中。我认为在此阶段它更具可读性。稍后,当您学习Python时,可能会用Player类和映射(数字1到6)->(将骰子作为字符串)来解决问题。

def six():
    print('you rolled a 6')
    print('''\
 -------
| o   o |
| o   o |
| o   o |
 -------   ''')
    return 6

def five():
    print('you rolled a 5')
    print('''\
 -------
| o   o |
|   o   |
| o   o |
 -------    ''')
    return 5

player_1_score = 0
player_2_score = 0

#for player1
player_1_score += five()
player_1_score += six()

#for player2
player_2_score += five() + six()

print('scores:',player_1_score,player_2_score)

注意:我在print('''\)语句中添加了一个反斜杠,以摆脱空白行。我更喜欢它,但您可能更喜欢空白行。

,

您想要更改玩家的分数,但您也没有对其进行修改。您正在发送玩家的分数,但是如果您在功能(sixfive)中更改分数,则会修改原始分数。如果要修改原始分数,则可以从函数中返回score并将其分配给播放器的分数。例如:

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

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

将参数传递给scorefive(score)的{​​{1}}参数会在每个函数的范围内创建一个six(score)变量。因此,当程序调用{​​{1}}时,score的值将复制到five(player_1_score)。您需要

  1. 修改每个函数以返回player_1_score

  2. 将每个函数的输出分配给每个外部范围变量

score
本文链接:https://www.f2er.com/3128290.html

大家都在问