我想弄清楚是什么导致了这个错误:
第60行: 是什么导致了这个错误???只出现在第一行:
UnboundLocalError: local variable 'name' referenced before assignment
代码:
^{pr2}$示例数据(合成数据):
^{3}$Last login: Tue Jul 2 15:33:31 on ttys000
/var/folders/jv/9_sy0bn10mbdft1bk9t14qz40000gn/T/Cleanup\ At\ Startup/ieca_first_col-394486416.142.py.command ; exit;
Samuel-Finegolds-MacBook-Pro:~ samuelfinegold$ /var/folders/jv/9_sy0bn10mbdft1bk9t14qz40000gn/T/Cleanup\ At\ Startup/ieca_first_col-394486416.142.py.command ; exit;
range 4
split area nmdeg
CEP
['Lannister G. Cersei M.A.T.']
({'additionaltext': '',
'bio': '',
'category': ' CEP',
'certifications': [],
'company': '',
'counselingoptions': [],
'counselingtype': [],
'datasource': {'additionaltext': '',
'linktext': '',
'linkurl': '',
'logourl': ''},
'degrees': ['M.A.T.'],
'description': '',
'email': {'emailtype': [], 'value': 'cersei@got.com'},
'facebook': '',
'languages': 'english',
'linkedin': '',
'linktext': '',
'linkurl': '',
'location': {'address': '',
'city': '',
'country': 'united states',
'geo': {'lat': '', 'lng': ''},
'loc_name': '',
'locationtype': '',
'state': '',
'zip': ''},
'logourl': '',
'name': {'first_name': u'Lannister',
'last_name': u'Cersei',
'middle_name': u'G.',
'title': u''},
'phone': {'phonetype': [], 'value': '1112223333'},
'photo': '',
'price': {'costrange': [], 'costtype': []},
'twitter': '',
'website': ''},)
({'additionaltext': '',
'bio': '',
'category': [],
'certifications': [],
'company': '',
'counselingoptions': [],
'counselingtype': [],
'datasource': {'additionaltext': '',
'linktext': '',
'linkurl': '',
'logourl': ''},
'degrees': ['Ed.M.'],
'description': '',
'email': {'emailtype': [], 'value': ''},
'facebook': '',
'languages': 'english',
'linkedin': '',
'linktext': '',
'linkurl': '',
'location': {'address': '',
'city': '',
'country': 'united states',
'geo': {'lat': '', 'lng': ''},
'loc_name': '',
'locationtype': '',
'state': '',
'zip': ''},
'logourl': '',
'name': {'first_name': u'Argle',
'last_name': u'Bargle',
'middle_name': u'D.',
'title': u''},
'phone': {'phonetype': [], 'value': ''},
'photo': '',
'price': {'costrange': [], 'costtype': []},
'twitter': '',
'website': ''},)
({'additionaltext': '',
'bio': '',
'category': [],
'certifications': [],
'company': '',
'counselingoptions': [],
'counselingtype': [],
'datasource': {'additionaltext': '',
'linktext': '',
'linkurl': '',
'logourl': ''},
'degrees': ['Ed.M.'],
'description': '',
'email': {'emailtype': [], 'value': 'dman123@gmail.com'},
'facebook': '',
'languages': 'english',
'linkedin': '',
'linktext': '',
'linkurl': '',
'location': {'address': '',
'city': '',
'country': 'united states',
'geo': {'lat': '', 'lng': ''},
'loc_name': '',
'locationtype': '',
'state': '',
'zip': ''},
'logourl': '',
'name': {'first_name': u'Sam',
'last_name': u'Man',
'middle_name': u'D.',
'title': u''},
'phone': {'phonetype': [], 'value': '0000001111'},
'photo': '',
'price': {'costrange': [], 'costtype': []},
'twitter': '',
'website': ''},)
({'additionaltext': '',
'bio': '',
'category': [],
'certifications': [],
'company': '',
'counselingoptions': [],
'counselingtype': [],
'datasource': {'additionaltext': '',
'linktext': '',
'linkurl': '',
'logourl': ''},
'degrees': ['M.S.'],
'description': '',
'email': {'emailtype': [], 'value': ''},
'facebook': '',
'languages': 'english',
'linkedin': '',
'linktext': '',
'linkurl': '',
'location': {'address': '',
'city': '',
'country': 'united states',
'geo': {'lat': '', 'lng': ''},
'loc_name': '',
'locationtype': '',
'state': '',
'zip': ''},
'logourl': '',
'name': {'first_name': u'D',
'last_name': u'Bamf',
'middle_name': u'G',
'title': u''},
'phone': {'phonetype': [], 'value': ''},
'photo': '',
'price': {'costrange': [], 'costtype': []},
'twitter': '',
'website': ''},)
logout
[Process completed]
我想留下评论,但我想这应该算是一个回答。你似乎喜欢编程(或者至少是认真对待它),所以请积极接受我的回答:不是作为另一种批评,而是作为一种建议,在将来如何避免类似的错误/问题。在
以下是我在阅读了您的代码后想到的几点:
1) 添加入口点
代码是混乱的,这使得你很难找到并遵循你的主要思路(程序逻辑)。既然你不仅仅是原型或实验,而是在编写一个正常运行的程序,那么你应该真正地添加一个入口点。在python中,首先用所有条目和元素(主要是导入、常量和函数)定义模块,然后在模块底部设置入口点:
if __name__ == '__main__':
。在2) 将代码分解为多个函数
这个程序不是那么大,但是因为你试图做太多(非常快-n-dirty)并且只使用几行代码,这就变得很危险了。你的代码增长非常快,并暴露出这样的错误。请慢慢来,学习如何将代码分解为函数,这些函数是每个模块的基本构建块。尝试在模块中定义许多小的自洽函数,并从程序的主要部分调用它们。如果您设法给它们起一个正确的名称,那么您的代码将非常可读,尤其是从
__main__
部分开始。在将每个函数视为一个小程序(分而治之)。使每个函数的行数保持较小(<;=20),并压缩参数数(<;=5-7)。它有许多优点:
__main__
、doctest或unittests来确保它正常工作。这样,即使在不应用复杂的调试技术之前,也可以完全控制程序3) 不要在没有运行的情况下编写太多代码
在编写程序时,缓慢地进行可以让你的想法保持不变的概述。即使代码最终会比您希望的更丑,对代码的任何增量更改都应该是可跟踪的(您知道/观察每一步添加了多少代码)。您还可以开始在本地使用版本控制(仅限于您自己),这将允许您通过保持提交的原子性和自包含性来缓慢地进行。在
4) 印刷和模具
如果你仍然觉得你付出了太多,或者写了太多代码却没有运行它,那么你最终会陷入与现在类似的境地。另一个技巧可以是将
exit()
调用放在新编写的中断代码的中间或之前(通过检查异常信息的行号)。在大多数情况下,尝试打印出变量并检查它们的值是否与预期值相似有助于找到问题。否则,只需对程序的一部分进行注释,以便后退几步(删减它,直到它变得很小,任何“开”的东西都能起作用)5) 循环复杂度
避免太多嵌套循环和条件构造。每个函数的嵌套块不要超过2-3个。这是重要的事情。使用pylint和PEP8等工具检查代码的质量。你会惊讶于这些工具能够找到多少关于代码的抱怨,这些代码看起来很不错。E、 每行代码有80个字符的限制是有很大的动机的。这确实可以防止编写过多的挂起和嵌套代码。理想情况下,代码总是紧凑的:每个函数都不太宽,也不太高。在
6) 避免
最后,尽量避免
如果你写了一行代码,你花了太长时间才想,那么考虑改正它。如果你写了一个你后来不明白的函数,考虑扔掉它。如果你做得好 你会发现一个你不明白的错误,考虑睡觉。
聚苯乙烯
别忘了抽名人
希望其中的一些要点有用。
德国劳埃德!
您使用的是一个局部变量
name
这里:您确实在该点之前设置
name
,但前提是某些条件匹配。当这些条件不匹配时,name
永远不会分配给,并且会引发异常。在{cd4>中的第一个分支是:
^{pr2}$如果
deg == word
从不匹配,则name
也从不设置。在您的函数也不会返回任何东西,因此
a = parse_ieca_gc(s)
只会将None
分配给a
。您需要使用return
关键字来设置函数的返回值。在最后但并非最不重要的是,您只将第一行从CSV文件传递给函数,并且第一行有与之关联的no网站:
相关问题 更多 >
编程相关推荐