Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未绑定本地错误-Python-文件I/O-字典_Python_File Io_Dictionary - Fatal编程技术网

未绑定本地错误-Python-文件I/O-字典

未绑定本地错误-Python-文件I/O-字典,python,file-io,dictionary,Python,File Io,Dictionary,我已经成功创建了5个不同的函数。这些函数添加到字典,查找字典中的值及其键,从字典中删除值或键,将字典保存到文件,最后将文件读回给我。现在我的目标是创建一个主函数,允许用户使用我创建的这些函数添加、删除、查找或清除字典,直到用户决定结束程序。我所有的函数都能工作,但我总是在程序的所有功能中得到相同的错误。错误如下:UnboundLocalError:赋值前引用的局部变量“diction”。我将粘贴下面的代码。有什么想法、建议或提示吗 def primary(): diction = {}

我已经成功创建了5个不同的函数。这些函数添加到字典,查找字典中的值及其键,从字典中删除值或键,将字典保存到文件,最后将文件读回给我。现在我的目标是创建一个主函数,允许用户使用我创建的这些函数添加、删除、查找或清除字典,直到用户决定结束程序。我所有的函数都能工作,但我总是在程序的所有功能中得到相同的错误。错误如下:
UnboundLocalError:赋值前引用的局部变量“diction”
。我将粘贴下面的代码。有什么想法、建议或提示吗

def primary():
    diction = {}
    readit()
    decision = raw_input('Which would you like to choose: add? find? remove? clear? or end?     ')
    if decision == 'add':
        key = raw_input('Which would you like to add?     ')
        value = raw_input('What would you like to link to your new addition?     ')
        addit(diction, key, value)
    elif decision == 'find':
        key = raw_input('What would you like to find?     ')
        findit(diction, key)
    elif decision == 'remove':
        key = raw_input('What would you like to have removed or edited?     ')
        value = raw_input('Which value would you like to remove?     ')
        removeit(diction, key, value)
    elif decision == 'clear':
        diction = []
    elif decision == 'end':
        saveDB()
    if decision == 'add' or 'find' or 'remove' or 'clear':
        primary()
    elif decision == 'end':
        exit

根据您的代码,在if语句之前没有定义措辞。这意味着,虽然是的,您确实在一个ELIF中定义了它,但它在其他ifs中不存在


您需要在main中初始化diction,使其全局可用,或者在ifs和elifs之前的primary()顶部初始化diction。

diction在哪里初始化?你不应该先这样做吗?请注意,最后一个if应该是('add'、'find'、'remove'、'clear')中的
if decision
-你所做的不会像你所想的那样。我如何让它重复,直到选择了end,而不必每次都经过primary()?因为每次都会设置diction={}。即使我的readit()函数在我的primary()之前返回diction?@user3014014 readit()没有被设置为等于任何值,您的意思是键入diction=readit()?