UnboundLocalError:分配前引用的局部变量“a1”

def para(value):


    if(value==1):

        a1=10

        b1=11

        c1=12

        d1=13

    elif(value==2):

        a1=20

        b1=21

        c1=22

        d1=23

    elif(value==3):

        a1=30

        b1=31

        c1=32

        d1=33

    else:

        print("wrong input")



    dict_a=dict({'a':a1,'b':b1})

    dict_b=dict({'c':c1,'d':d1})


    return(dict_a, dict_b)


def main():

    global dict_a, dict_b


    value=input("enter the choice: \n1. 1st \n2. 2nd \n3. 3rd \n4. 4th")


    [dict_a, dict_b]=para(value)


main()

我得到的错误是:


dict_a=dict({'a':a,'b':b})

UnboundLocalError: local variable 'a1' referenced before assignment


神不在的星期二
浏览 178回答 2
2回答

慕少森

如果您的代码命中 else 块,则不会为 a1 分配值。您可以通过以下两种方式之一解决此问题:分配一个默认值,以防它没有在条件块中分配。a1 = 0b1 = 0c1 = 0d1 = 0if(value==1):    a1=10    b1=11    c1=12    d1=13elif(value==2):    a1=20    b1=21    c1=22    d1=23elif(value==3):    a1=30    b1=31    c1=32    d1=33else:    print("wrong input")或者在 else 块中分配变量,这将实现基本相同的事情if(value==1):    a1=10    b1=11    c1=12    d1=13elif(value==2):    a1=20    b1=21    c1=22    d1=23elif(value==3):    a1=30    b1=31    c1=32    d1=33else:    a1 = 0    b1 = 0    c1 = 0    d1 = 0    print("wrong input")如果您不希望用户使用这些默认值,您可以随时在 else 中抛出异常,让用户知道他们输入了错误的值

小唯快跑啊

您应该仅在有效输入的情况下初始化字典def para(value):    dict_a = dict()    dict_b = dict()    if(value==1):        dict_a={'a':10,'b':11}        dict_b={'c':12,'d':13}    elif(value==2):        dict_a={'a':20,'b':21}        dict_b={'c':22,'d':23}    elif(value==3):        dict_a={'a':30,'b':31}        dict_b={'c':32,'d':33}    else:        print("wrong input")    return(dict_a, dict_b)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python