Python - 在For循环中更新变量

ema*_*nim 2 python

所以我决定用Python编写Monopoly,但是我在更新玩家位置时遇到了一些麻烦.我写了一个for循环,遍历玩家,为每个玩家掷骰子,然后更新他们的位置.问题是位置变量没有保留最新位置,它在for循环开始时保持重置为0.这是我的代码:

player1location = 0

def turn(numberPlayers, player, player1location, Board):
    for player in range(numberPlayers):
        player = 'Player'+str(player+1)
        print 'It\'s', player, 'turn!'
        print player1location
        rollDice = raw_input('Press Enter to roll the dice!')
        diceRoll = random.randint(1,6)
        print player, 'rolled a', diceRoll
        player1location = player1location + diceRoll
        print 'You landed on', player1location
        print '\n'

while True:
    turn(numberPlayers, player, player1location, Board)
Run Code Online (Sandbox Code Playgroud)

如有必要,我可以提供更多代码,但我认为这是控制玩家位置的所有内容.谢谢!

编辑:显然我正在改变局部变量而不是全局变量.我将如何更改全局变量?

Roh*_*ain 8

您的函数参数与要更新的目标变量同名.因此,您所做的任何更改都是对函数参数进行的,而不是对全局变量进行的.那是因为function为传递给函数的参数创建了一个局部范围.因此,它覆盖了全局使用相同名称定义的变量.

因此,要么更改函数参数player1location的名称,要么更改全局变量的名称.