为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

神不在的星期二 2022-05-24 15:54:58
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
查看完整描述

2 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

如果您的代码命中 else 块,则不会为 a1 分配值。


您可以通过以下两种方式之一解决此问题:


分配一个默认值,以防它没有在条件块中分配。


a1 = 0

b1 = 0

c1 = 0

d1 = 0

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")

或者在 else 块中分配变量,这将实现基本相同的事情


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:

    a1 = 0

    b1 = 0

    c1 = 0

    d1 = 0

    print("wrong input")

如果您不希望用户使用这些默认值,您可以随时在 else 中抛出异常,让用户知道他们输入了错误的值


查看完整回答
反对 回复 2022-05-24
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

您应该仅在有效输入的情况下初始化字典


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)


查看完整回答
反对 回复 2022-05-24
  • 2 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号