python UnboundLocalError局部变量';机会';分配前参考

python UnboundLocalError局部变量';机会';分配前参考,python,Python,下面的代码在执行时显示了错误,在执行Looper()之前,我不是在第二行中执行了辅助吗?但是,当我在Looper()的第一行中添加chances=5时,它就起作用了 import random chances = 5 def Looper(): if chances != 0: if real_answer == user_answer: print("Gotcha") exit() elif real_a

下面的代码在执行时显示了错误,在执行Looper()之前,我不是在第二行中执行了辅助吗?但是,当我在Looper()的第一行中添加chances=5时,它就起作用了

import random

chances = 5
def Looper():
    if chances != 0:
        if real_answer == user_answer:
            print("Gotcha")
            exit()
        elif real_answer < user_answer:
            chances -= 1
            print("Too large")
        else:
            chances -= 1
            print("Too small")
real_answer = random.randint(1, 1000)
user_answer = int(input("This is a guessing game, please guess a         number from 1 to 1000. You have 5 chances"))

Looper()
随机导入
机会=5
def Looper():
如果有机会0:
如果真实答案==用户答案:
打印(“抓住了”)
退出()
elif真实答案<用户答案:
机会-=1
打印(“太大”)
其他:
机会-=1
打印(“太小”)
real_answer=random.randint(11000)
user_answer=int(输入(“这是一个猜谜游戏,请猜一个1到1000之间的数字。你有5次机会”))
活套()

除了希望
机会
成为
Looper
的一个参数(例如
def Looper(机会=5):
)之外,还可以在函数内部使用
全局机会
获取外部变量的引用

更好:

def looper(chances=5):
    if chances != 0:
        ...
也有可能,但是是全局状态

CHANCES = 5
def looper():
    global CHANCES
    if CHANCES != 0:
        ...
完整故事:

import random

def looper(real_answer, chances=5):
    for _ in range(chances):
        user_answer = int(input("This is a guessing game, please guess a number from 1 to 1000. You have %i chances" % (chances, )))
        if real_answer == user_answer:
            return True
        elif real_answer < user_answer:
            print("Too large")
        else:
            print("Too small")

if __name__ == '__main__':
    real_answer = random.randint(1, 1000)    
    if looper(real_answer):
        print("Gotcha")
随机导入
def活套(真实答案,机会=5):
对于范围内的(机会):
user_answer=int(输入(“这是一个猜谜游戏,请猜一个从1到1000的数字。您有%i次机会”%(机会,))
如果真实答案==用户答案:
返回真值
elif真实答案<用户答案:
打印(“太大”)
其他:
打印(“太小”)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
real_answer=random.randint(11000)
如果活套(真实答案):
打印(“抓住了”)

有什么例子吗?我是个新手:)什么是非局部概率?函数中定义的变量是该函数的局部变量。从定义它的点到函数结束都可以访问。虽然函数内部和外部变量的名称相同,但它们是不同范围的独立副本。。