早就想推薦的一個(gè)Python入門練手項(xiàng)目
隨著人工智能的興起,國(guó)內(nèi)掀起了一股Python學(xué)習(xí)熱潮,入門級(jí)編程語(yǔ)言,大多選擇Python,有經(jīng)驗(yàn)的程序員,也開始學(xué)習(xí)Python,正所謂是人生苦短,我用Python。
有個(gè)Python入門練手項(xiàng)目,一直沒有和大家推薦過,這個(gè)開源項(xiàng)目還是一本書,這本書最大的特點(diǎn)在于每個(gè)章節(jié)都是由一位該領(lǐng)域的開源大牛編寫的,每章包含一個(gè)程序?qū)崿F(xiàn),這些程序的代碼都在500行以內(nèi),故而這本書叫——《500 Lines or Less》
這本書在 GitHub 上的名稱為 500lines,目前已經(jīng)獲得 20344 個(gè) Star,4697 個(gè)Fork
雖說本書是關(guān)于Python入門,但實(shí)際上并非所有代碼都是用Python編寫的,里面也有一些項(xiàng)目采用Ruby、C、JavaScript等編寫,實(shí)際上這本書的重點(diǎn)不在于編程語(yǔ)言,更側(cè)重于程序員在編寫代碼時(shí)所作出的設(shè)計(jì)決策和權(quán)衡:
- 為什么使用這些特定接口將應(yīng)用程序劃分為特定的模塊?
- 為什么這里使用繼承,那里使用封裝?
- 如何預(yù)測(cè)程序可能需要擴(kuò)展的地方,以及如何讓程序員輕松實(shí)現(xiàn)
書中一共有22個(gè)項(xiàng)目,下面介紹一下,這本書都有哪些項(xiàng)目:
1、Blockcode: A visual programming toolkit(可視化編程)
該項(xiàng)目主要通過龜圖(turtle graphics)實(shí)現(xiàn)塊語(yǔ)言,通過簡(jiǎn)單拖放創(chuàng)建圖案,整個(gè)過程通過常用的Html、CSS和JavaScript來實(shí)現(xiàn)(每一個(gè)塊由html元素組成,CSS用于設(shè)置樣式,JavaScript時(shí)間處理器進(jìn)行拖拽并修改參數(shù))。屬于圖片編程的一種
2、A Continuous Integration System(持續(xù)集成系統(tǒng))
持續(xù)集成(CI)系統(tǒng)是Python編寫的用于測(cè)試新代碼的專用系統(tǒng)。該項(xiàng)目使用Git作為測(cè)試代碼的存儲(chǔ)庫(kù)。但它只使用標(biāo)準(zhǔn)的源代碼管理調(diào)用,如果你不熟悉Git但熟悉其他版本控制系統(tǒng)(VCS),如svn或Mercurial,也是可以正常使用。該系統(tǒng)有三大主要功能:獲取更改后代碼、自動(dòng)測(cè)試代碼、生成測(cè)試報(bào)告
3、Clustering by Consensus(分布式系統(tǒng))
分布式系統(tǒng) paxos原理與實(shí)現(xiàn),并采用一些技巧幫助你盡可能的減少和查找、修復(fù)漏洞以及特別的開發(fā)調(diào)試技巧。
4、Contingent: A Fully Dynamic Build System(文檔系統(tǒng))
使用python構(gòu)建一個(gè)文檔系統(tǒng)
5、A Web Crawler With asyncio Coroutines(爬蟲)
幾百行代碼實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Web爬蟲程序
6、Dagoba: an in-memory graph database(圖形數(shù)據(jù)庫(kù))
這個(gè)項(xiàng)目主要講述如何通過JavaScript構(gòu)建一個(gè)圖形數(shù)據(jù)庫(kù)
7、DBDB: Dog Bed Database(key-value的非關(guān)系型數(shù)據(jù)庫(kù))
DBDB(Dog Bed Database)是一個(gè)Python庫(kù),它實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的key-value的非關(guān)系型數(shù)據(jù)庫(kù),旨在保護(hù)計(jì)算機(jī)出現(xiàn)崩潰或者報(bào)錯(cuò)時(shí)的數(shù)據(jù)。
8、A Flow Shop Scheduler
Flow Shop 調(diào)度問題,通過Python的一些功能特性,用少量的代碼,從局部最優(yōu)解找全局最優(yōu)解
9、Making Your Own Image Filters
通過Processing(一種用Java構(gòu)建的編程語(yǔ)言和開發(fā)環(huán)境)創(chuàng)建一個(gè)圖像過濾器
10、A Python Interpreter Written in Python(Python解釋器)
Byterun是一個(gè)用Python實(shí)現(xiàn)的Python解釋器,這個(gè)項(xiàng)目主要是幫助你搞清楚這個(gè)解釋器的結(jié)構(gòu)
11、A 3D Modeller
用 Python 實(shí)現(xiàn)一個(gè)3D設(shè)計(jì),顯示到屏幕,可以交互。
12、a-simple-object-model(對(duì)象模型)
本章探討了一系列非常簡(jiǎn)單的對(duì)象模型的實(shí)現(xiàn)。碼適用于Python 2.7和3.4,為了更好理解,還介紹了對(duì)象模型測(cè)試。
13、Optical Character Recognition (OCR)
AI的一個(gè)眾所周知的應(yīng)用是光學(xué)字符識(shí)別(OCR)。OCR系統(tǒng)是一種軟件,該項(xiàng)目將使用神經(jīng)網(wǎng)絡(luò)(ANN)搭建一個(gè)OCR系統(tǒng)
14、A Pedometer in the Real World(計(jì)步器)
教你如何使用Ruby建立一個(gè)基本的計(jì)步器,并在代碼中添加一個(gè)Web層,為用戶提供一個(gè)友好UI界面
15、The Same-Origin Policy(SOP)
SOP是每個(gè)現(xiàn)代瀏覽器安全機(jī)制的重要組成部分。該項(xiàng)目使用Alloy(一種用于建模和分析軟件設(shè)計(jì)的語(yǔ)言),構(gòu)建一個(gè)SOP模型
16、A Rejection Sampler(決策取樣器)
該項(xiàng)目將對(duì)采樣、多項(xiàng)分布、隨機(jī)分布等名詞,通過Python編程方式來實(shí)現(xiàn)。
17、Web Spreadsheet(Web 電子表格)
該項(xiàng)目?jī)H僅用了99行 HTML、CSS 和 JS 代碼就寫出一個(gè)Web 的電子表格
18、Static Analysis(靜態(tài)分析)
通過Julia代碼編寫靜態(tài)分析工具,一種基于類型的靜態(tài)分析工具,一種是基于變量的靜態(tài)分析工具。
19、A Template Engine(模板引擎)
任何Web應(yīng)用程序中的一個(gè)重要階段是生成要提供給瀏覽器的HTML。本項(xiàng)目通過Python構(gòu)建一個(gè)簡(jiǎn)單的模板引擎,解析 html 中的靜態(tài)變量和簡(jiǎn)單的語(yǔ)句
20、A Simple Web Server(Web服務(wù)器)
利用Python搭建一個(gè)簡(jiǎn)單的 Web 服務(wù)器
21、An Event-Driven Web Framework
在Common Lisp中構(gòu)建一個(gè)Web框架,解決游戲中交互的問題
22、An Archaeology-Inspired Database
488行Clojure源代碼構(gòu)建數(shù)據(jù)庫(kù),其中73行是空白行,55行是文檔字符串。
寫在最后
如果你對(duì)這本書感興趣,可以通過官方鏈接免費(fèi)閱讀,也可以購(gòu)買原版平裝書籍或者PDF版本,你還可以直接在GitHub上獲取這22個(gè)項(xiàng)目的源碼,地址如下:
在線閱讀地址:http://aosabook.org/en/index.html
GitHub地址:https://github.com/aosabook/500lines




































