首先尝试使用Python

时间:2015-02-25 06:53:30

标签: python

我刚开始用Python编码。我之前没有任何其他编程语言的经验,所以我希望这个论坛对我来说是一个学习编码的好地方!所以这是:

import random

bankroll = 10
bankroll2 = 10

def player():
    player1 = random.randrange(0, 5)
    player2 = random.randrange(0, 5)
    if player1 > player2:
        print "Player 1 throws a :", player1
        print "Player 2 throws a :", player2
        print "Player 1 Win"
        bankroll + 1
        bankroll2 -1
        print bankroll
        print bankroll2
    elif player1 < player2:
        print "Player 1 throws a :", player1
        print "Player 2 throws a :", player2
        print "Player 2 Win"
        print bankroll
        print bankroll2
    else:
        print "Player 1 throws a :", player1
        print "Player 2 throws a :", player2
        print "It's a tie!"
        print bankroll
        print bankroll2
    print ""



player()
player()
player()
player()
player()
player()
player()

现在资金总是重新启动到10,我理解为什么,但我不知道如何避免它。我的目标是跟踪资金。

如果有人能指出我正确的方向,我们将不胜感激。

3 个答案:

答案 0 :(得分:4)

您并未在任何地方更改bankrollbankroll + 1会向bankroll添加一个然后返回值,但不会更改bankroll

尝试使用bankroll = bankroll + 1或更短的bankroll += 1形式 与bankroll2相同,请尝试bankroll2 += -1

当然,如果你坚持在模块中使用全局变量:

def player():
    global bankroll
    global bankroll2
    # This will allow your function to access and change the bankroll vars you defined 

也许对于你的下一个项目,你可以尝试OOP以避免使用全局变量,因为你的代码会很快变得混乱,试试这个Avoid using global without confusing new programming students in Python?

使用class Player似乎很方便,因为你需要实例化player1,player2等

答案 1 :(得分:2)

要将bankroll设置为其他值,请使用赋值运算符(=),例如比如bankroll = bankroll + 5。还有一些类似的增强赋值运算符,如bankroll += 5

现在,为函数中的变量赋值使其成为局部变量,然后在该函数中忽略全局变量。因此,您还必须告诉Python它是全局的,并且您不需要在该函数内使用global bankroll的本地域。

答案 2 :(得分:1)

bankroll + 1仅计算,但不对结果执行任何操作。您需要将其分配回变量,例如bankroll = bankroll + 1或(更简洁地)bankroll += 1

但是,这会导致一个新问题:player是一个具有自己的局部变量范围的函数。因此,您应该将起始资金转移到该资金并从中返回结果:

def player(br1, br2):
    player1 = random.randrange(0, 5)
    player2 = random.randrange(0, 5)
    if player1 > player2:
        print "Player 1 throws a :", player1
        print "Player 2 throws a :", player2
        print "Player 1 Win"
        br += 1
        br2 -= 1
        print br
        print br2
    # etc.
    return br, br2

然后将其称为bankroll, bankroll2 = player(bankroll, bankroll2)