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
答案 0 :(得分:0)
如果代码碰到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中引发异常,以使用户知道他们输入了错误的值
答案 1 :(得分:0)
您应该仅在输入有效的情况下初始化字典
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)