推荐:一个适合于Python新手的入门练手项目
随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python
有个Python入门练手项目,一直没有和大家推荐过,这个开源项目还是一本书,这本书最大的特点在于每个章节都是由一位该领域的开源大牛编写的,每章包含一个程序实现,这些程序的代码都在500行以内,故而这本书叫——《500 Lines or Less》
这本书在 GitHub 上的名称为 500lines,目前已经获得 20344 个 Star,4697 个Fork
虽说本书是关于Python入门,但实际上并非所有代码都是用Python编写的,里面也有一些项目采用Ruby、C、JavaScript等编写,实际上这本书的重点不在于编程语言,更侧重于程序员在编写代码时所作出的设计决策和权衡:
- 为什么使用这些特定接口将应用程序划分为特定的模块?
- 为什么这里使用继承,那里使用封装?
- 如何预测程序可能需要扩展的地方,以及如何让程序员轻松实现
书中一共有22个项目,下面介绍一下,这本书都有哪些项目:
1、Blockcode: A visual programming toolkit(可视化编程)
该项目主要通过龟图(turtle graphics)实现块语言,通过简单拖放创建图案,整个过程通过常用的Html、CSS和JavaScript来实现(每一个块由html元素组成,CSS用于设置样式,JavaScript时间处理器进行拖拽并修改参数)。属于图片编程的一种
2、A Continuous Integration System(持续集成系统)
持续集成(CI)系统是Python编写的用于测试新代码的专用系统。该项目使用Git作为测试代码的存储库。但它只使用标准的源代码管理调用,如果你不熟悉Git但熟悉其他版本控制系统(VCS),如svn或Mercurial,也是可以正常使用。该系统有三大主要功能:获取更改后代码、自动测试代码、生成测试报告
3、Clustering by Consensus(分布式系统)
分布式系统 paxos原理与实现,并采用一些技巧帮助你尽可能的减少和查找、修复漏洞以及特别的开发调试技巧。
4、Contingent: A Fully Dynamic Build System(文档系统)
使用python构建一个文档系统
5、A Web Crawler With asyncio Coroutines(爬虫)
几百行代码实现一个简单的Web爬虫程序
6、Dagoba: an in-memory graph database(图形数据库)
这个项目主要讲述如何通过JavaScript构建一个图形数据库
7、DBDB: Dog Bed Database(key-value的非关系型数据库)
DBDB(Dog Bed Database)是一个Python库,它实现了一个简单的key-value的非关系型数据库,旨在保护计算机出现崩溃或者报错时的数据。
8、A Flow Shop Scheduler
Flow Shop 调度问题,通过Python的一些功能特性,用少量的代码,从局部最优解找全局最优解
9、Making Your Own Image Filters
通过Processing(一种用Java构建的编程语言和开发环境)创建一个图像过滤器
10、A Python Interpreter Written in Python(Python解释器)
Byterun是一个用Python实现的Python解释器,这个项目主要是帮助你搞清楚这个解释器的结构
11、A 3D Modeller
用 Python 实现一个3D设计,显示到屏幕,可以交互。
12、a-simple-object-model(对象模型)
本章探讨了一系列非常简单的对象模型的实现。码适用于Python 2.7和3.4,为了更好理解,还介绍了对象模型测试。
13、Optical Character Recognition (OCR)
AI的一个众所周知的应用是光学字符识别(OCR)。OCR系统是一种软件,该项目将使用神经网络(ANN)搭建一个OCR系统
14、A Pedometer in the Real World(计步器)
教你如何使用Ruby建立一个基本的计步器,并在代码中添加一个Web层,为用户提供一个友好UI界面
15、The Same-Origin Policy(SOP)
SOP是每个现代浏览器安全机制的重要组成部分。该项目使用Alloy(一种用于建模和分析软件设计的语言),构建一个SOP模型
16、A Rejection Sampler(决策取样器)
该项目将对采样、多项分布、随机分布等名词,通过Python编程方式来实现。
17、Web Spreadsheet(Web 电子表格)
该项目仅仅用了99行 HTML、CSS 和 JS 代码就写出一个Web 的电子表格
18、Static Analysis(静态分析)
通过Julia代码编写静态分析工具,一种基于类型的静态分析工具,一种是基于变量的静态分析工具。
19、A Template Engine(模板引擎)
任何Web应用程序中的一个重要阶段是生成要提供给浏览器的HTML。本项目通过Python构建一个简单的模板引擎,解析 html 中的静态变量和简单的语句
20、A Simple Web Server(Web服务器)
利用Python搭建一个简单的 Web 服务器
21、An Event-Driven Web Framework
在Common Lisp中构建一个Web框架,解决游戏中交互的问题
22、An Archaeology-Inspired Database
488行Clojure源代码构建数据库,其中73行是空白行,55行是文档字符串。
写在最后
如果你对这本书感兴趣,可以通过官方链接免费阅读,也可以购买原版平装书籍或者PDF版本,你还可以直接在GitHub上获取这22个项目的源码,地址如下:
在线阅读地址:http://aosabook.org/en/index.htmlGitHub地址:https://github.com/aosabook/500lines
为了让国内的开发者能够更好理解阅读,有人已经在GitHub上开源了500 line or less 中文翻译版本——「500LineorLess_CN」
中文版Github地址(待完成):https://github.com/HT524/500LineorLess_CN
推荐:一个适合于Python新手的入门练手项目的更多相关文章
- python新手70个练手项目
不管学习哪门语言都希望能做出实际的东西来,这个实际的东西当然就是项目啦,不用多说大家都知道学编程语言一定要做项目才行. 这里整理了70个Python实战项目列表,都有完整且详细的教程,你可以从中选择自 ...
- Python之路【第二十四篇】:Python学习路径及练手项目合集
Python学习路径及练手项目合集 Wayne Shi· 2 个月前 参照:https://zhuanlan.zhihu.com/p/23561159 更多文章欢迎关注专栏:学习编程. 本系列Py ...
- 微信小程序初体验,入门练手项目--通讯录,后台是阿里云服务器(一)
内容: 一.前言 二.相关概念 三.开始工作 四.启动项目起来 五.项目结构 六.设计理念 七.路由 八.部署线上后端服务 同步交流学习社区: https://www.mwcxs.top/page/4 ...
- 微信小程序初体验,入门练手项目--通讯录,部署上线(二)
接上一篇<微信小程序初体验,入门练手项目--通讯录,后台是阿里云服务器>:https://www.cnblogs.com/chengxs/p/9898670.html 开发微信小程序最尴尬 ...
- Python学习路径及练手项目合集
Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159
- 适合Python的5大练手项目, 你练了么?
在练手项目的选择上,还存在疑问?不知道要从哪种项目先下手? 首先有两点建议: 最好不要写太应用的程序练手,要思考什么更像是知识,老只会写写爬虫是无用的,但是完全不写也不行. 对于练手的程序,要注意简化 ...
- (转)Python学习路径及练手项目合集
转载自知乎 Wayne Shi,仅仅为了方便收藏查看,侵权删. 阶段1:入门知识 零编程基础的可以先从下面几个教程了解编程及环境入门知识.(已有编程基础直接从阶段2起步) 1. 编程新手指南2. Li ...
- 适合Python 新手的5大练手项目,你练了么?
接下来就给大家介绍几种适合新手的练手项目. 0.算法系列-排序与查找 Python写swap很方便,就一句话(a, b = b, a),于是写基于比较的排序能短小精悍.刚上手一门新语言练算法最合适不过 ...
- Python新手练手项目
1.新手练手项目集中推荐 https://zhuanlan.zhihu.com/p/22164270 2.Python学习网站 https://www.shiyanlou.com 3.数据结构可视化学 ...
随机推荐
- Android 复制 粘贴 剪贴板的使用 ClipboardManager
Copy and Paste 版本:Android 4.0 r1 快速查看 用于复制粘贴数据的基于剪贴板的框架. 同时支持简单和复杂的数据,包括文本串.复杂的数据结构.文本和二进制流数据.程序 as ...
- C51 单片机的中断号以及中断向量
1.外部中断0. 1:分别由引脚/INT0./INT1的电平信号引起. 2.定时/计数器0.1:分别由T0. T1的溢出引起. 3.串行口发送.接收:发送完一个字节或接收到一个字节引起. 上述共5个中 ...
- 类似QQ的聊天工程
首先建立一个html:<!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- GoBelieve UseID及ImID方案
GoBelieve: imId = (appid + uid) IM 服务器用(appid + uid)imid做用户的唯一标示 imid是IM平台上沟通的凭证 客户端请求联系人列表后,会有对应uid ...
- Oracle split分区表引起ORA-01502错误
继上次删除分区表的分区遇到ORA-01502错误后[详细见链接:Oracle分区表删除分区引发错误ORA-01502: 索引或这类索引的分区处于不可用状态],最近在split分区的时候又遇到了这个问题 ...
- servlet,过滤器,监听器,拦截器的区别
一.目录 1.概念 2.生命周期 3.职责 4.执行过程 二.内容 概念 1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性, 可以动态生成web页面它 ...
- oracle本地安装注意事项
这两天组员在本地windows上安装oracle数据库,安装完各种问题,pl/sql developer以及tns_admin配置以及tnsnames.ora和sqlnet.ora listener. ...
- 【C++ Primer】读书笔记_第一章
Main(): 1. C++程序必须包含main()函数,操作系统通过调用main来运行C++程序. 2. main()的形参可以为空. 3. main函数的返回类型必须为int,返回给操作系统.in ...
- 日期格式操作,在oracle和mysql中的实现
oracle add_months(日期格式值 , 整数n) 当整数n=12时,代表一年,向后推迟一年,若n=-12代表回退一年 如 to_char(add_months(to_date('2018 ...
- MySQL高可用之MGR安装测试
Preface We've learned the machenism of MGR yesterday,Let's configurate an environment and have s ...