【发布时间】:2016-05-20 21:06:50
【问题描述】:
我的问题: 在我的程序中,我有一个函数,它只应该在用户输入几个值时运行,然后将这些值保存在字典中。我最初的想法是在函数中获取字典的长度,如果它是 0(意味着它是空的),那将是没有输入值的标志。但是,当我运行代码时,我收到此错误“UnboundLocalError: local variable 'dictionary' referenced before assignment”。另一方面,当长度大于 1(已输入值)时,代码运行完美。相关代码如下;
def displayValues(data):
if len(data) == 0:
print('No Values Found - Please Enter Values')
Main()
elif len(data) != 0:
print()
print('-'*77)
for key,value in sorted(data.items()):
print(key,':',value)
print('-'*77)
time.sleep(5)
print()
def Main():
while True:
choice = displayMenu()
if choice == 1:
dictionary = setValues()
elif choice == 2:
displayValues(dictionary)
elif choice == 3:
runModel(dictionary)
elif choice == 4:
exportData()
elif choice == 5:
quit()
Main()
请注意,我确信返回保存在字典变量中的值的 setValues() 函数正在运行,就好像字典的 len 不为 0 的情况一样,代码工作正常。此外,我没有在代码的其他任何地方使用变量名“字典”,因此不会重复。 关于我哪里出错的任何可能的想法将不胜感激?谢谢
【问题讨论】:
-
有 2 个分支(
choice2 或 3)您可以在没有声明的情况下使用dictionary。您必须确保在到达这些分支之前分配字典。 -
所有修复对我来说都很完美,谢谢大家的帮助
标签: python python-3.x