赋值之前引用的本地变量“值”的UnboundLocalError

时间:2018-12-28 09:47:13

标签: python

下面的代码可以运行,但是在尝试键入时始终会导致错误UnboundLocalError: local variable 'value' referenced before assignment。我去过很多地方,但似乎无法将解决方案应用于我的具体情况:

def letterbreak(luv):
    setluv=list(str(luv))
    for x in setluv:
        if x=='a':
            value=int(1)
        if x=='b':
            value=int(2)
        if x=='c':
            value=int(3)
        if x=='d':
            value=int(4)
        if x=='e':
            value=int(5)
        if x=='f':
            value=int(6)
        .......
        .......
        .......
        .......

        if x=='y':
            value=int(25)
        if x=='z':
            value=int(26)
        print(str(value))
    return

letterbreak(input())

请让我知道条件是否有问题。

2 个答案:

答案 0 :(得分:2)

如果没有条件执行,则不定义value。因此,如果x == '1'必须打印什么值?

解决方案是在if之前定义默认值:

for x in setluv:
    value = -1

    if x=='a':
        value=int(1)
    # ... etc

    print(str(value))

答案 1 :(得分:0)

在旁注(对于评论来说太长了),您的代码可以简化很多。例如,您可能正在使用如下查询表:

import string
tmp = list(string.ascii_lowercase)
lookup = dict(zip(tmp, range(1, len(tmp)+1)))

def letterbreak(luv):
    setluv=list(str(luv))
    for x in setluv:
        print(str(lookup.get(x, "Value not defined")))
    return