在Python内部递增一个全局变量


p1_wins = 0
p2_wins = 0
def my_function(p1_wins, p2_wins, p1_answer, p2_answer)
if p1_answer > p2_answer:
print('Player 1 Won the Round')
p1_wins += 1
elif p1_answer < p2_answer:
print('Player 2 Won the Round')
p2_wins += 1
while True:
if p1_wins == 3:
print('Player 1 Wins')
if p2_wins == 3:
print('Player 2 Wins')
p1_answer = input()
p2_answer = input()
my_function(p1_wins, p2_wins, p1_answer, p2_answer)

我试图找出如何增加p1_wins和p2_wins变量,而不使用我的函数内部的全局语句。因为我试图避免从函数内部访问全局变量的坏做法。当执行这段代码时,程序运行正常,但是没有给wins变量加1。尝试创建一个简单的游戏,并使用一个函数验证谁赢得了一轮,然后增加那里的胜变量。然后,一旦# of wins达到某个数字,游戏就结束了。我不确定在这里用函数是不是最好的写法。感谢任何帮助!

我想返回一个布尔值,然后用它来增加胜利,但我不完全确定如何做到这一点。我想到的是对函数的返回值使用if语句。例如,如果函数返回True,则p1_wins += 1,如果返回False,则p2_wins += 1。否则,我知道如果我把这个函数都消掉,它就能正常工作。虽然,这会破坏函数的目的。

一个非常小的改变将返回更新的p1_winsp2_wins作为一个元组,并相应地更新循环中的值:

def my_function(p1_wins, p2_wins, p1_answer, p2_answer):
if p1_answer > p2_answer:
print('Player 1 Won the Round')
p1_wins += 1
elif p1_answer < p2_answer:
print('Player 2 Won the Round')
p2_wins += 1
return p1_wins, p2_wins
p1_wins = 0
p2_wins = 0
while True:
if p1_wins == 3:
print('Player 1 Wins')
if p2_wins == 3:
print('Player 2 Wins')
p1_answer = input()
p2_answer = input()
p1_wins, p2_wins = my_function(p1_wins, p2_wins, p1_answer, p2_answer)

最新更新