在python中,全局变量不会在不同的函数中拾取

在python中,全局变量不会在不同的函数中拾取,python,global-variables,Python,Global Variables,我正在尝试制作一个掷2个骰子的代码,并且需要寻找一些其他的需求。我已经声明一个变量为全局变量,但它仍然给我一个错误 我还尝试将变量作为条件放入draw()函数中,但这仍然不起作用 class DiceGame(): def game(): global p1total global p1total p1total = 0 p2total = 0 i=1 for i in range(1,5): dice1 = rando

我正在尝试制作一个掷2个骰子的代码,并且需要寻找一些其他的需求。我已经声明一个变量为全局变量,但它仍然给我一个错误

我还尝试将变量作为条件放入draw()函数中,但这仍然不起作用

class DiceGame():    
  def game():
    global p1total
    global p1total
    p1total = 0
    p2total = 0
    i=1
    for i in range(1,5):
        dice1 = random.randint(1,6)
        dice2 = random.randint(1,6)
        dice3 = random.randint(1,6)
        dice4 = random.randint(1,6)
        dice5 = random.randint(1,6)
        dice6 = random.randint(1,6)

        if (dice1+dice2)%2 == 0:
            if p1total >= 10:
                p1total -+10
            else:
                p1total = 0
        else:
            p1total += 5
        if dice1==dice2:
            p1total += dice1+dice2+dice3

        if (dice4+dice5)%2 == 0:
            if p2total >= 10:
                p2total -+10
            else:
                p2total = 0
        else:
            p2total += 5
        if dice4==dice5:
            p2total += dice4+dice5+dice6
        i+=1
    DiceGame.draw(p1total, p2total)
  def draw(p1total, p2total):
    print("Player 1 has:",p1total)
    print("Player 2 has:",p2total)
    if p1total==p2total:
        p1dice = random.randint(1,6)
        p1total+=p1dice
        p2dice = random.randint(1,6)
        p2total+=p2dice
        DiceGame.draw()
    elif p1total > p2total:
        print("Player 1 wins with",p1total)
        print("Player 2 lost with",p2total)
        DiceGame.scores()
    elif p1total < p2total:
        print("Player 2 wins with",p2total)
        print("Player 1 lost with",p1total)
class DiceGame():
def game():
全球p1总数
全球p1总数
p1total=0
p2total=0
i=1
对于范围(1,5)内的i:
dice1=random.randint(1,6)
dice2=random.randint(1,6)
dice3=随机的随机数(1,6)
dice4=随机的。随机数(1,6)
dice5=随机的随机数(1,6)
dice6=随机的随机数(1,6)
如果(骰子1+骰子2)%2==0:
如果p1total>=10:
p1总计-+10
其他:
p1total=0
其他:
p1总计+=5
如果dice1==dice2:
p1total+=dice1+dice2+dice3
如果(骰子4+5)%2==0:
如果p2total>=10:
P2总计-+10
其他:
p2total=0
其他:
p2总计+=5
如果dice4==dice5:
p2total+=dice4+dice5+dice6
i+=1
骰子游戏。抽签(第1页总计,第2页总计)
def消耗(p1总计,p2总计):
打印(“玩家1有:”,共页)
打印(“玩家2有:”,共页)
如果p1total==p2total:
p1dice=random.randint(1,6)
p1total+=p1dice
p2dice=random.randint(1,6)
p2total+=p2dice
骰子游戏
elif P1总计>P2总计:
打印(“玩家1赢得”,共页)
打印(“玩家2丢失”,共页)
骰子游戏。分数()
elif P1总计
错误: 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 骰子游戏 文件“C:/Users/fredd/Desktop/dan/Dice游戏控制评估最小值 第61行,在游戏中 骰子游戏 文件“C:/Users/fredd/Desktop/dan/Dice游戏控制评估最小值 线条.py“,第63行,在图纸中 打印(“玩家1有:”,共页) UnboundLocalError:赋值前引用的局部变量“p1total”


我只需要将变量提供给draw()函数并输出赢家,这是我的一个错误,我没有在全局语句中正确定义变量

这是我的一个错误,我没有在全局语句中正确定义变量

首先,您有两次
global p1total
,您从未声明
global p2total
。其次,你需要将错误粘贴到你的问题中,这样我们可以帮助你调试这个问题。我已经声明了一个变量为全局变量,但它仍然给我一个错误。你让我们猜测错误是什么。告诉我们错误。@Davis谢谢我一定错过了。它现在正在工作。为什么它们是全局的,而不是实例属性?@chepner,因为当时我不知道有一个Function init可以做到这一点。现在我这样做了,这使它变得更容易了,你有两次
global p1total
,你从不声明
global p2total
。其次,你需要将错误粘贴到你的问题中,这样我们可以帮助你调试这个问题。我已经声明了一个变量为全局变量,但它仍然给我一个错误。你让我们猜测错误是什么。告诉我们错误。@Davis谢谢我一定错过了。它现在正在工作。为什么它们是全局的,而不是实例属性?@chepner,因为当时我不知道有一个Function init可以做到这一点。现在我做到了,这让事情变得容易多了