什么是在分配之前引用的局部变量'

时间:2015-04-03 12:30:27

标签: python python-3.x error-handling

我正在尝试解决checkio(房屋密码)问题 ..我的代码如下

def checkio(data):
    if len(data)>9:
        for i in data:
            if str.isdigit(i)==True:
                global counternumber
                counternumber=counternumber+1
            if str.isupper(i)==True:
                global counterupper
                counterupper=counterupper+1
            if str.islower(i)==True:
                global counterlower
                counterlower=counterlower+1
    if (counternumber>1 & counterupper>1 & counterlower>1):
        return True
else:
    return  False

在尝试实现弹出以下错误时执行此功能

NameError:未定义全局名称'counterupper'

在声明为全局变量之前会弹出错误

UnboundLocalError: local variable 'counterupper' referenced before assignment,

这些错误意味着什么以及如何解决它们?

请清楚解释,因为我是编程新手。

1 个答案:

答案 0 :(得分:1)

您可以简写:

def checkio(data):
    return (len(data) > 9 and
        any(ch.isdigit() for ch in data) and
        any(ch.isupper() for ch in data) and
        any(ch.islower() for ch in data))