已经学习了一段时间的Python,若是你看过以前W3Cschool的文章,就知道是时候该进去【项目】阶段了。html
可是在练手项目的选择上,还存在疑问?不知道要从哪一种项目先下手?node
W3Cschool首先有两点建议:算法
最好不要写太应用的程序练手,要思考什么更像是知识,老只会写写爬虫是无用的,可是彻底不写也不行。学习资料的话能够关注薇信公众号:Python工程师,号码是Pythonoshell
对于练手的程序,要注意简化和抽象,可是若是简化不得当的话,很容易看几篇教程就被懒得下手了。框架
接下来就给你们介绍几种适合新手的练手项目。ssh
0.算法系列-排序与查找分布式
Python写swap很方便,就一句话(a, b = b, a),因而写基于比较的排序能短小精悍。刚上手一门新语言练算法最合适不过了,还能顺便刷题,利于找工做。简单的练习,让你受益无穷。函数
1.编译系列学习
这个系列的重点就是前面说到的简化,可是不要期望一口气写一个完整的C编译器,即便只针对C一个很小的子集。因此咱们须要一步一步来,写一个计算器的解释器是很好的开始,再进一步能够写一个极简语言的解释器,譬如brainfuck。spa
再进一步你能够扩展已有的计算器解释器,譬如加入声明、赋值与运算、循环、流程控制, 构成一个简单的LL(1)语法,而后递归降低分析,这就能够搞一个简易同时又图灵完备的玩具语言出来了。
2.分布式系统/计网系列
这系列的项目,第一步能够从写一个简单的HTTP客户端开始,缘由很简单,由于HTTP大概是最简单的应用层协议了。而后能够考虑实现一个基本的ssh,你大概天天都会用ssh,难道不想作一个本身的简易版本吗?
而后能够考虑分布式系统课上的经典做业,譬如写一个简单的RPC。能够参考Java的RPC原理以及Google的RPC框架(有Python版)。
3.操做系统系列
操做系统系列,能够尝试写一个简单的存储管理的文件系统。第一步的简化就是用一个大的空文件做为磁盘,把对磁盘的读写抽象成对这个文件的读写。基本就是实现下inode,而后包装成一个shell,支持下最基本的命令,新建、追加、读写、删除之类的操做。这个练习最有趣也最有意义的地方在于多级索引的实现,
4.周边系列
你也能够试试Jython,IronPython之类的,看看和CPython好比何。而后再试试Pypy,必然是一开始很高兴,最后发现各类常见库不支持,最后仍是转回CPython。
作实验的话用IPython把Python函数当命令跑很方便。厦工叉车