Python 为什么在添加while循环和if-then-else-if语句后会出现UnboundLocalError?

Python 为什么在添加while循环和if-then-else-if语句后会出现UnboundLocalError?,python,Python,这是怎么回事? 这是一个基本的老虎机游戏,但是当我尝试添加硬币和硬币生成的条件时,我得到了UnboundLocalError。 当我没有while循环和if-then-else-if语句时,会生成随机数 import random def main(): coins = 50 x = 0 y = 0 z = 0 while coins >= 0 or giveUp != yes: coins = (coins - 3)

这是怎么回事? 这是一个基本的老虎机游戏,但是当我尝试添加硬币和硬币生成的条件时,我得到了
UnboundLocalError
。 当我没有while循环和if-then-else-if语句时,会生成随机数

import random

def main():
    coins = 50
    x = 0
    y = 0
    z = 0
    while coins >= 0 or giveUp != yes:
        coins = (coins - 3)
        x = random.randrange(1, 7)
        y = random.randrange(1, 7)
        z = random.randrange(1, 7)
        x = x
        y = y
        z = z
        print (x + y + Z)
        if (x == y) or (x == z):
            if (x == 1):
                coins = (coins + 3)
                print ("you win 3 coins")
            elif x == 2:
                coins = (coins +3)
                print = ("you win 3 coins")
            elif x == 3:
                coins = (coins + 3)
                print = ("you win 3 coins")
            elif x == 4:
                coins = (coins +3)
                print = ("you win 3 coins")
            elif x == 5:
                coins = (coins + 3)
                print = ("you win 3 coins")
            elif x == 6:
                coins = (coins + 3)
                print = ("you win 3 coins")
            elif x == 7:
                coins = (coins + 3)
                print = ("you win 3 coins")
            giveUp = (input("do you give up?"))

main()
此分配(也称为“绑定”)

表示放弃是本地的

while
循环在您分配(即绑定)该局部变量之前尝试测试该局部变量

您可以通过在
while
循环之前设置
giveUp=“No”
来解决此问题

另外,
yes
可能应该是
“yes”

在这里,循环条件取决于名为
giveUp
的变量,但您正试图在循环中定义该变量。您必须在循环之前先定义它。最好的解决方案是在
while
循环之前定义
giveUp=“No”
。另外,
input()
返回字符串,因此它必须是

giveUp="No"
while coins >= 0 or giveUp != "yes":
#codes
另一个提示是,您使用的是
操作符,因此如果用户键入
no
,即使没有任何硬币,用户仍然可以玩。您应该将其更改为

while coins >= 0 and giveUp != "yes":

现在如果用户想玩,需要硬币和“是”

请更正您的代码。。。
print(x+y+Z)
name
Z
在您的代码中位于上方。 这里肯定有错误。。和
print=
name
print
不应跟在字符
=

试试这个

>>> import random
>>> def main():
    coins = 50
    x = 0
    y = 0
    z = 0
    while coins >= 0 or giveUp != yes:
        coins = (coins - 3)
        x = random.randrange(1, 7)
        y = random.randrange(1, 7)
        z = random.randrange(1, 7)
        x = x
        y = y
        z = z
        print (x + y + z)
        if (x == y) or (x == z):
            if (x == 1):
                coins = (coins + 3)
                print ("you win 3 coins")
            elif x == 2:
                coins = (coins +3)
                print ("you win 3 coins")
            elif x == 3:
                coins = (coins + 3)
                print ("you win 3 coins")
            elif x == 4:
                coins = (coins +3)
                print ("you win 3 coins")
            elif x == 5:
                coins = (coins + 3)
                print ("you win 3 coins")
            elif x == 6:
                coins = (coins + 3)
                print ("you win 3 coins")
            elif x == 7:
                coins = (coins + 3)
                print ("you win 3 coins")
            giveUp = (input("do you give up?"))


>>> main()
you win 3 coins
do you give up?3
12
12
9
7
12
9
14
10
15
you win 3 coins
do you give up?1
9
>>>

x=x,y=y,z=z
的乐趣是什么?你想说什么?你应该说
放弃!='是“
在第一个检查条件中,如果
-
elif
-代码,您能解释一下这个
吗?根据显示的值,您将始终得到相同的结果(除了在大多数情况下您犯了错误并覆盖了
print
while coins >= 0 and giveUp != "yes":
>>> import random
>>> def main():
    coins = 50
    x = 0
    y = 0
    z = 0
    while coins >= 0 or giveUp != yes:
        coins = (coins - 3)
        x = random.randrange(1, 7)
        y = random.randrange(1, 7)
        z = random.randrange(1, 7)
        x = x
        y = y
        z = z
        print (x + y + z)
        if (x == y) or (x == z):
            if (x == 1):
                coins = (coins + 3)
                print ("you win 3 coins")
            elif x == 2:
                coins = (coins +3)
                print ("you win 3 coins")
            elif x == 3:
                coins = (coins + 3)
                print ("you win 3 coins")
            elif x == 4:
                coins = (coins +3)
                print ("you win 3 coins")
            elif x == 5:
                coins = (coins + 3)
                print ("you win 3 coins")
            elif x == 6:
                coins = (coins + 3)
                print ("you win 3 coins")
            elif x == 7:
                coins = (coins + 3)
                print ("you win 3 coins")
            giveUp = (input("do you give up?"))


>>> main()
you win 3 coins
do you give up?3
12
12
9
7
12
9
14
10
15
you win 3 coins
do you give up?1
9
>>>