我刚开始用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,我理解为什么,但我不知道如何避免它。我的目标是跟踪资金。
如果有人能指出我正确的方向,我们将不胜感激。
答案 0 :(得分:4)
您并未在任何地方更改bankroll
,bankroll + 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)
。