# 练手挑战：5个闲时挑战的python项目




python的初学者们总是会为找不到练手的项目而发愁，这几天正好碰巧在某视频网站看到有人分享一些不错的练手项目，于是就在这里大言不惭的抛砖引玉一下。


### web网站(使用flask/django)

这是一个非常基础或者说是经典的练手项目。

我们可以给自己简单设计一个网站，然后用python去实现它。

当然在目前的情况下，实现网站可能会分为前端页面和后端接口这两块内容，不过使用flask或者django的话，其实你可以服务端直出html，加上一些前端的css和js，你就可以实现一些功能相对简单但视觉相对美观大方的网页了。

这里强烈推荐大家使用flask去玩一下，如果想降低实现难度的话，可以先不实现持久化(数据库)，另外前端的css和js如果大家也没有时间从零开始写的话，推荐大家可以使用bootstrap等前端框架，这样就可以相对的将自己的精力放在python语言和后端逻辑层面。

当然，这个项目最有魅力的是，你不仅可以学习到一些基本的web开发技巧，只要你有时间，你甚至可以通过项目学习到一系列的后端中间件，比如

* 可以通过实现每日点赞数功能来玩一下redis
* 可以通过学习持久化来玩一下各种数据库，比如mysql等
* 可以通过实现异步发送邮件功能来玩一下消息队列

最后，如果你有兴趣的话，你还可以把网站部署到云服务器上，顺便可以学习到一些运维的经验。

是不是很有意思？

### 改进一些流行的算法

比如自己实现一个解数独的算法或者是寻找最短路径的算法。

视频的作者就自己现实了数独的解法，他首先实现了一个纯文本的解法，后来使用pygame实现了一个数独游戏，不仅可以正常玩耍，还可以一键解决数独，总之看上去是蛮有意思的。

另外视频作者还可视化实现了寻找最短路径的算法，就是把动态解决问题的过程都展示了出来，让人感到非常的信服，作者应该是用pygame来实现这种可视化的。

其实大家可以从最简单的排序开始，把排序过程用pygame可视化，由浅入深，应该会非常有意思的。


### 实现一个俄罗斯方块游戏

俄罗斯方块可以在任何时候让人欲罢不能。

实现一个俄罗斯方块游戏应该是很多人都曾经冒出过的念头，既然有这个想法，那就去实现吧。

网上有很多实现的思路，代码，最重要的是，有很多的静态资源，比如背景，各个方块的资源等，实现起来是困难不大的。

另外也可以实现一个贪吃蛇，即怀旧又可以自己玩一玩打发时间。

### 实现一个AL/ML项目

视频作者说自己在tensorflow上抄代码，反正网站上例子特别多，他就先抄完，然后跑起来，这样就开始自己的机器学习/AI的之旅。

当你把所有例子都抄完运行成功以后，你对机器学习也就入门了吧，这时候就可以实现自己的各种脑洞了。

### micorcontrol编程

视频作者使用类似树莓派的microcontrol实现了会议室监控的功能，大概是通过代码控制摄像头做人脸识别，然后记录下来谁进了哪个会议室，看起来没啥用处，不过挺有意思的，也很有挑战，毕竟人脸识别也运用了ML的知识。

树莓派加传感器可以实现很多应用，比如我就听说过某大厂用树莓派加传感器实现了手机的温度功能以及弱网IP的功能。

树莓派本身不是很贵，有时间的同学可以去玩一下。


### 总结

总之，如果你能完成上述5个项目，那么你的python运用能力基本上就可以满足日常工作的需要了。








原始封面

![课程图片](https://images.unsplash.com/photo-1531168556467-80aace0d0144?w=300)


