引言:最近在自学Python,学习基础部分用的书是《Python编程——从入门到实践》2016版(最新版借不到),很经典的一本书。除了“外星人入侵”和“Web应用程序”这两个项目感觉不是很有必要,其他部分都看完了。然后,在数据可视化的其中一节,我发现了一个书里的bug。如果有最新版书的小伙伴,可以查证一下,看这个bug还在不在。如果有学习Python的好的书或课程,也可以推荐给我一下,不胜感激。
关于该bug的说明
- 位于P349页,”python_repos.py”的部分代码。
python_repos.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| --snip--
repo_dicts = response_dict['item'] print("Number of items:", len(repo_dicts))
names, plot_dicts = [], [] for repo_dict repodicts: names.append(repo_dict['name']) plot_dict = { 'value': repo_dict['stargazers_count'], 'label': repo_dict['description'], } plot_dicts.append(plot.dict)
my_style = LS('#333366', base_style=LCS) --snip--
chart.add('', plot_dicts) chart.render_to_file('pthon_repo.svg')
|
本节的目的是用API调用返回Github上30个项目,然后按照得到stars的数量排序,利用Pygal做一个条形图。
问题出在如上所示代码的第12行“’label’: repo_dict[‘description’]”,这一行的作用是获得每一个项目的“description”。但不是所有的项目都有description(虽然一般受欢迎的项目都有),我测试代码时获取的前30个项目中的第28名就没有description,然后会报错“NoneType”。具体情况见下图。
解决方法也很简单,就是判断一下有没有“description”.代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| --snip-- for repo_dict in repo_dicts: names.append(repo_dict['name']) stars.append(repo_dict['stargazers_count']) plot_dict = { 'value': repo_dict['stargazers_count'], 'xlink': repo_dict['html_url'], } if repo_dict['description'] == None: plot_dict['label'] = 'No description' else: plot_dict['label'] = repo_dict['description'] plot_dicts.append(plot_dict) --snip--
|
-------------本文结束 感谢阅读-------------