前两天完成了优达学城的OpenstreetMaps项目,可能由于是第一个项目,花在项目上的时间差不多跟前期学习的时间一样多。写代码时也踩了一些坑,于是写些文字,算是对整个项目的总结。
对开始着手项目的两点建议
一、写项目代码时使用jupyter notebook
一个项目代码少说得有四五百行 notebook的好处是可以一行行运行程序,而不像.py文件那样,一次得执行一个文件。
而且还可以随时调试函数,以前的做法是新建一个文件,还得来回切换,着实不方便。
如果清楚哪个变量的数据,直接新建个cell就可以搞定了。
完成全部程序后,保存为.py文件,以这种形式提交代码后,你才可以看到导师对程序的审阅,现在还不支持反馈notebook形式的代码文件。
二、遵守“准则”
导师评价也是一条条验证你的报告是否遵守“准则”。导师对你报告的审阅结果就是这张“准则”表,不通过的地方就在表中对应地方写下建议。
所以不要偷懒了,写报告前先他细阅读“准则”,并看看示例报告是如何与“准则”匹配的。
编程方面的两点思考
一、数据结构
数据结构很重要,一个简单合适的数据结构可以让代码变得统一简洁很多。
最初为了更详细的分类,以便能更详细的记录数据,我经一个变量采用了这样一种结构:{'eng':[],'eng_colon':{'name':[],'alt_name':[]...},'other':[],'problems':[]}
,结果在后续的函数中,都得额外写几行代码处理“eng_colon”的情形。后来实在觉得这样太烦了,改了数据结构,代码一下子就简洁了不少,也降低了出错的可能性。
二、缩进错误
不知道其他人如何,我发现自己在写程序时,即使再简单的函数,也经常无法一次性通过,总会出现bug。而所有bug中,最让我抓狂得莫过于IndentationError
。
我总结出出现这错误有三种可能性:
- 确实是没有对齐
- 混用了制表符和空格
- 附近有其它的语法错误,比如使用了错误的数据结构
我还不清楚具体有哪些语法错误可能会导致其它地方的缩进错误。如果排除了前两种可能性,就需要注释掉出现缩进问题的前面语句,查看是哪出了问题。
一个问题
提交代码时,最后的报告可否用html格式,而不是pdf呢?毕竟notebook导出的html报告比打印出来的pdf漂亮一些,还可以少一道工序。
总结
虽然顺利完成了项目一,但是并没有掌握前面所教授的知识,特别是对于网页抓取这块,还有些不清楚。像ET等python文档也没有通读过,后续还得花时间复习笔记。
附录:
项目代码Github
网友评论