Python 有哪些一千行左右的經典練手項目?


不要只知道拿python寫個網站、爬蟲啥的。Python能做的事情那麼多,看了遍所有的回答,咋就沒個覆蓋全面點呢?

用Python做個練手項目還需要1000行?500行以內足以!

推薦下這個項目:aosabook/500lines

這個項目由N多個子項目組成,每個項目的代碼都在500行以內,實現一個完整的功能。

涵蓋的內容包括:

  • web-server
  • crawler
  • template-engine
  • ocr
  • image-filter
  • cluster
  • event-web-framework
  • interpreter

等等..


--2015年8月17日更新

佔個坑,準備寫下怎麼用Python處理cookies和調用系統命令行命令。

過幾天更新時估計已在紐黑文了。

--2015年8月9日更新

感謝評論區的知友提醒,構造HTTP包可以用requests庫,會輕便很多。這個庫的宣傳語也很有趣

Requests: HTTP for Humans

www.python-requests.org/

不過requests庫並不是Python的自帶庫,使用前需要進行安裝。Windows或Linux用戶可以用pip進行安裝。(前提是電腦已裝過pip包管理工具)

在命令行下輸入:

pip install requests

即可完成安裝

有了requests後,構造POST請求就方便得多。

import requests
username = "your_username"
password = "your_password"
payload ={"action":"login","username":username,"password":password,"ac_id":"3","type":"1","wbaredirect":"http://net.zju.edu.cn",
"mac":"undefined","user_ip":"","is_ldap":"1","local_auth":"1"}
url = "https://net.zju.edu.cn/cgi-bin/srun_portal"
res = requests.post(url, data = payload)
#print response
print res.text

構造其他類型的HTTP請求也很方便

import requests
#GET
res = requests.get("http://www.baidu.com")
#POST
res = requests.post("http://www.baidu.com")
#DELETE
res = requests.delete("http://www.baidu.com")
#PUT
res = requests.put("http://www.baidu.com")

---2015年7月8日更新

換成電腦答題,關於用Python寫學校無線登陸腳本的一些步驟。

〇、查看登陸頁面的結構

以我們學校為例:

在連接學校wifi但沒有登陸時,無論你在地址欄敲入什麼網址,都會被重定向到http://net.zju.edu.cn這個頁面。在此頁面輸入用戶名密碼並登陸後,才能上網。

一、用Chrome找到完成登陸操作的數據包

在Chrome按下F12審查元素,選擇netwrok選項,勾選保存日誌(preserve log),因為有可能登陸成功後頁面發生跳轉,這時需要我們保存日誌。輸入用戶名密碼後,單擊登陸。這時你會看到瀏覽器向伺服器發送了一堆數據包:

(從上圖的密碼框的長度來看,我們能得出一個規律:程序員的密碼一般都很長

其中我們需要找到包含用戶名密碼的數據包,這個包最為關鍵,因為它完成了登陸操作。上圖中紅框內的就是這個包。

一個技巧,一般包含用戶名密碼的數據包都會以POST方法發送。因為它是瀏覽器遞交數據至伺服器,而且是敏感信息,不應出現在url中。

從REST HTTP的層面理解,它更改了伺服器的狀態。

二、分析數據包的格式

我們點開這個包,會看到form data中出現了username,password欄位,這就是我們想要的數據包。

在這個包的header中我們也可以找到這個包的目的地址,截圖中沒有顯示出來,它是:

https://net.zju.edu.cn/cgi-bin/srun_portal三、用Python構建符合條件的數據包,發送到伺服器對應地址

直接上代碼了,重點是構造和第二步抓包得到的一樣的POST數據。

#Import urlencode() in this package to encode post data
import urllib
#Import http relevant functions
from urllib2 import Request, urlopen, URLError, HTTPError
username = "your_username"
password = "your_password"
data ={"action":"login","username":username,"password":password,"ac_id":"3","type":"1","wbaredirect":"http://net.zju.edu.cn",
"mac":"undefined","user_ip":"","is_ldap":"1","local_auth":"1"}
data = urllib.urlencode(data)
try:
req = Request("https://net.zju.edu.cn/cgi-bin/srun_portal")
response = urlopen(req,data, timeout = 10)
content = response.read()
response.close()
except URLError, e:
if hasattr(e, "reason"):
info = "[ERROR] Failed to reach the server.
Reason: " + str(e.reason)
elif hasattr(e, "code"):
info = "[ERROR] The server couldn"t fullfill the request.
Error code: " +str(e.code)
else:
info = "[ERROR] Unknown URLError"
cPrint(info, COLOR.RED)
return False

except Exception:
import traceback
print "Generic exception: " + traceback.format_exc()
return False

完整代碼參見https://github.com/zjusbo/ZJUWLAN_AUTO_LOGIN

運行一次代碼,成功的話,會發現電腦已經能上網了。

----原答案

私以為千行的Python算是大項目了吧,在學校里的話。其實看似簡單的項目,深挖的話,可以實現的功能有很多。

如果題主是學生的話,可以寫寫學校無線的自動登錄腳本,其實核碼沒幾行,就是構造一個GET或POST請求,發到驗證的地址就好。不僅提高上網效率,還能分享給校內的同學們。

如果深挖這個技術的話……

需要用Chrome抓包(或其他抓包程序),構造正確的request;

處理HTTP返回碼,處理異常(超時,密碼錯誤,伺服器無法訪問等);

處理COOKIE【如果需要的話】;

讓程序記住用戶密碼,以供下次自動登錄的話,要用到資料庫存儲;

密碼最好加密存儲,實現個AES吧;

AES的密鑰如何選取?各個用戶的密鑰別用一樣的,那獲取本機網卡的MAC地址;

索性把自動發現ZJUWLAN(我們學校的wifi名),自動連接wifi,斷線重連也搞定了;

答主實現了以上的功能,代碼量才六七百行。

https://github.com/zjusbo/ZJUWLAN_AUTO_LOGIN

其實以此項目為基礎,可以舉一反三。

破解其他同學的wifi賬號,因為賬號名就是學號,密碼暴力枚舉。你會發現好多同學的密碼真的很脆弱。

還可以用腳本模擬瀏覽器登錄網站,但有的網站需要輸圖片驗證碼,又需要寫模式識別的代碼(不過好像有現成的Python庫)。

有的網站被和諧了,需要讓腳本掛上代理訪問,那就再加點代碼。

學無止境啊。


謝邀。據我了解,沒有千行左右的「經典」練手項目。但是我可以推薦一些練手項目。這些項目來著 教你閱讀Python開源項目代碼 - Python之美 - 知乎專欄 :

和工作中看別人代碼差不多,基本每個人、每個項目、每個團隊都有自己寫代碼的風格,比如變數命名風格、某些語言特性使用方式、代碼規範要求、目錄風格等,其實開源項目的作者也是一樣。看代碼,如看人(團隊)。 首先介紹下我的喜好(排名分先後):

1. kennethreitz。requests和python-guide作者。他還有一個非常勵志的故事,有興趣的可以看 誰說程序員不是潛力股?

2. mitsuhiko。flask、Jinja2、werkzeug和flask-sqlalchemy作者。

3. sigmavirus24。flake8、pycodestyle(原pep8)、requests、urllib3等項目的主要貢獻者和維護者。

4. ask。Celery及相關依賴的作者。

5. ajdavis。mongo-python-driver(pymongo)、tornado等項目的主要貢獻者。

6. bitprophet。fabric、paramiko(Python的ssh庫)作者。

前2個是公認的Python領域代碼寫的最好的、最有創意的工程師。看他們的代碼不會錯

初學者推薦閱讀項目

初學者可以先閱讀一些代碼量比較少的,最好是單文件的項目:

1. GitHub - kennethreitz/pip-pop: Tools for managing requirements files.

2. GitHub - kennethreitz/envoy: Python Subprocesses for Humans?.

3. GitHub - kennethreitz/records: SQL for Humans?

4. GitHub - mitsuhiko/pluginbase: A simple but flexible plugin system for Python.

5. GitHub - mitsuhiko/pipsi: pip script installer

6. GitHub - mitsuhiko/unp: Unpacks things.

7. GitHub - chrisallenlane/cheat

8. GitHub - jek/blinker: A fast Python in-process signal/event dispatching system.

9. GitHub - mitsuhiko/platter: A useful helper for wheel deployments.

10. GitHub - kennethreitz/tablib: Python Module for Tabular Datasets in XLS, CSV, JSON, YAML, amp;amp;amp;c.

看代碼主要是了解別人寫代碼的方式,語法實踐這些內容。看完之後,你可以針對這些項目能解決的問題自己寫個項目,寫完之後和上述項目去對比一下,看看哪些方面做的不好。

歡迎關注本人的微信公眾號獲取更多Python相關的內容(也可以直接搜索「Python之美」):

http://weixin.qq.com/r/D0zH35LE_s_Frda89xkd (二維碼自動識別)


最近依然有小夥伴私信我爬蟲類的問題…或者提問邀我…然而並不太有時間鼓搗了。尤其是諸如模擬登陸知乎的問題,不停地有人私信問評論問。知乎有一點修改,之前回答里貼出來的代碼的確不能用了,直接用這個回答里提到的項目就可以了。

專欄還是不太有人看,所以把小夥伴的項目安利到這裡吧。

簡單介紹:知乎爬蟲。功能和文檔都比較完善了,可以當作API來用。

介紹在此 知乎非官方 API 非官方使用指南 - 小段同學的雜記 - 知乎專欄

Github地址 7sDream/zhihu-py3 · GitHub

(Python2類似項目地址 egrcc/zhihu-python · GitHub)

項目並不複雜。稍微有點爬蟲的知識都可以看懂。

其次作為針對知乎的爬蟲,大家可能會比較熟悉。可以利用裡面提供的一些基礎的功能,組合一些個性化的實現效果出來。

比如利用裡面提供對問題、答案、用戶的各種操作,你完全可以實現RSS,批量保存自製電子書,或者爬更多數據做分析,或者針對指定話題下的問題進行跟蹤與分析,找到可能會火的潛力問題。

當然上面這些其實也已經有人做過了

比如 SimplyY/zhihu-rss · GitHub (RSS)

比如 如何保存某位知乎用戶的所有答案? - 知乎用戶的回答 (保存知乎答案)

比如 看知乎 - 每天三次,為你精選知乎最佳答案(這個項目有點大了…)

至於分析潛力問題那個,因為項目里對話題的處理還不完善,所以並不能直接調用實現。有能力的小夥伴希望能把 Chrome 插件做出來啊!感覺還是很有用的!

不過這個想法來源於 你開發過什麼不尋常的程序? - 知乎用戶的回答

這個可以作為一個實現,不過也已經不更新了 能利用爬蟲技術做到哪些很酷很有趣很有用的事情? - 張方舟的回答

我之前一個很簡陋的實現 知乎將如何應對「狗日的知乎」計劃? - 段曉晨的回答

當然這個回答的根本目的還是在於安利 7sDream/zhihu-py3 · GitHub 這個項目。提到其他的實現只是為了給大家提供一些思路,讓大家可以更好地折騰。

希望能給初學爬蟲的小夥伴一點幫助。

希望能給對基於知乎內容數據處理感興趣的小夥伴提供便利。

如果有小夥伴做出來功能完善的項目可以留到評論里,很樂意幫大家安利出去~

以上。


Python 應用比較雜,在我看來並無所謂經典的練手項目,不以應用為目的的學習效率會非常低的。

工作,練手的地方頗多,日常使用即可。自動化,數據分析,寫一些日常使用的小工具等等。

個人,從你喜歡的方向著手,拿我來說,我經常看 Dota 視頻更新,就寫了 Dota視頻專區 ,從優酷自動抓取最新視頻更新到我的網站,並且自動發微博(Dota更了嗎),以前還做過類似的視頻解說分析,Dota知名解說在優酷粉絲重合率分析;我特別喜歡音樂,於是做了 1983 http://m1983.net/., 評論從網易雲熱評中抓的。

我其實很討厭 Python 這門語言(尤其是縮進,簡直反人類啊),但是不知不覺作為我的第二語言(第一語言是 C++ )已經用了三年了,因為它確實幫我解決了很多實實在在的問題(基本上你能想到的庫,它都是支持的)。

所以說,並不需要經典的練手項目,用它來解決實際的問題就是最好的鍛煉。


今天 一如既往最炫酷的雲爬蟲——造數 給大家帶來一批寶貝,大家可以在深夜裡獨自一人默默研究把玩,也可以在廣場上一邊遛狗一邊和盆友們開心品鑒。

經典入門及第三方庫

  • vinta/awesome-python 精心設計的Python學習框架,書籍和軟體
  • nvbn/thefuck 華麗的應用程序更正您以前的控制台命令
  • pallets/flask、django/django Python的web框架
  • requests/requests 強大的庫,相信你一定學過
  • ipython/ipython 生產性互動式計算系統
  • python/cpython Python編程語言官方文檔

好玩的項目

  • warner/magic-wormhole 把文件從一台電腦安全地複製到另一台
  • pyvideo/pyvideo 和Python相關的視頻
  • 7sDream/zhihu-oauth 知乎官方未開放的 OAuth2 介面
  • errbotio/errbot 最簡單和最流行的聊天機器人
  • fogleman/Minecraft 用Python寫的我的世界
  • mopidy/mopidy 一個可擴展的音樂伺服器
  • Eloston/ungoogled-chromium 可以修改Google Chromium組件
  • livid/v2ex 在Google App Engine上運行的社區
  • overviewer/Minecraft-Overviewer 展示高解析度地圖
  • charlierguo/gmail Google Mail的Pythonic界面
  • egirault/googleplay-api Google Play非官方的Python API

(有沒有想過 用Python 自己寫一個Minecraft,筒子們?

網路爬蟲

  • LiuXingMing/SinaSpider 新浪微博爬蟲(Scrapy、Redis)
  • binux/pyspider Python中強大的網路爬蟲系統
  • bowenpay/wechat-spider 微信公眾號爬蟲
  • jhao104/proxy_pool Python爬蟲代理IP池(proxy pool)
  • smicallef/spiderfoot SpiderFoot,開源腳印和情報收集工具。
  • lining0806/PythonSpiderNotes Python入門網路爬蟲之精華版
  • Germey/Zhihu 崔慶才博主寫的知乎爬蟲
  • gnemoug/distribute_crawler 分散式網路爬蟲
  • Chyroc/基於搜狗微信搜索的微信公眾號爬蟲介面
  • ResolveWang/weibospider 分散式微博爬蟲(PC端抓取)
  • airingursb/bilibili-user Bilibili用戶爬蟲
  • yanzhou/CnkiSpider 中國知網爬蟲

數據相關

  • donnemartin/data-science-ipython-notebooks 綜合型的數據科學教程
  • sqlmapproject/sqlmap 自動SQL注入和資料庫接管工具
  • mitmproxy/mitmproxy 針對滲透測試員和軟體開發人員的互動式TLS功能攔截HTTP代理
  • rushter/data-science-blogs 很多數據科學的博客
  • ujjwalkarn/DataSciencePython 通用數據分析和機器學習任務
  • justmarkham/DAT3 華盛頓的大數據課程
  • billryan/algorithm-exercise leetcode/lintcode題解
  • bitly/data_hacks 使用命令行進行數據分析

機器學習

  • MorvanZhou/tutorials 機器學習相關教程
  • ahangchen/GDLnotes 谷歌深度學習筆記
  • tensorflow/models 使用TensorFlow構建模型
  • astorfi/TensorFlow-World TensorFlow的簡單和現成的教程
  • fchollet/keras Python深度學習庫,運行在TensorFlow,Theano或CNTK
  • josephmisiti/awesome-machine-learning 精心設計的機器學習框架,書籍和軟體
  • songrotek/Deep-Learning-Papers-Reading-Roadmap 深度學習論文閱讀路線圖
  • MLWave/Kaggle-Ensemble-Guide Kaggle組合指南的代碼
  • eriklindernoren/ML-From-Scratch 機器學習模型和演算法
  • humphd/have-fun-with-machine-learning 機器學習與神經網路圖像分類的初學者指南
  • arielf/weight-loss 機器學習符合酮症:如何有效減肥
  • luispedro/BuildingMachineLearning 本書用Python構建機器學習系統的源代碼

更多精彩,關注公眾號:造數


大家如果有對爬蟲感興趣的,不妨來看看我們的課程

Python爬蟲


練手的話,可以自己寫一個web框架+模版語言+orm,實現最小最核心功能的話,每一個可以做到一千行左右。

過程中會讓你了解到Python的強大和可愛之處。

比如寫web框架,你會大量使用到threading local,正則表達式,裝飾器,描述器,類的一些較高級的特徵等~實現session的時候,你會用到加密演算法,pickle或shelf等持久化的方法~

寫模版語言的時候,你會用到抽象語法樹,遞歸等,會考慮怎麼封裝eval,使其變的安全~

寫orm的時候,最重要的當然是meta class啦,怎麼攔截類的創建,怎麼更好地利用Python的自省,怎樣設計繼承關係~

我最近就在寫一個自己心目中的比較理想的框架:url轉發,request和response的處理等借鑒bottle,session借鑒webpy,模版語言借鑒jinja2,orm和admin借鑒django,blueprint借鑒flask~~目前已經把框架主體和template language搞定~~雖然是重複造輪子,不過這一過程卻是很有樂趣^_^


要做1000行代碼的,對Python應該已經比較熟悉了,可以試試下面幾個進階的練手項目。如果剛入門,下面答案里推薦了24個Python入門到綜合的練手項目:
Python 的練手項目有哪些值得推薦? - Wayne Shi 的回答

進階篇
1.Python - Python實現Python解釋器
從實現一個玩具解釋器開始學習解釋器基本知識,然後考察Python位元組碼進一步學習理解Python解釋器的內部機制,最終實現一個500行以內的Python解釋器。
2.Python - 基於Flask/RethinkDB/Backbone.js實現TODO List
使用 RethinkDB,Flask 與 Backbone.js 製作一個簡單的 todo list。
3.3.Python - Flask開發輕博客
使用Python Flask Web框架開發一個具備基本功能的輕博客平台,在其中學習Python的Web開發。
4.Python - Django 搭建簡易博客
本教程介紹如何一步步使用 Django 開發一個簡單的博客 Web應用,涉及 Django Web開發,MVC,Template等知識點,適用於有 Python 和 Django 基礎的同學。
編輯於 2016-06-22

最後:我有建立一個python學習交流群,在群里大家相互幫助,相互關心。相互分享知識,多一個人多一個想法,只有人多的時候遇到問題才會有更多的人幫你解決問題,如果你也是願意分享,不是單純的伸手黨我歡迎你來群里,先在搜索框裡面加483在加上546 最後是416 這樣你就可以找到組織大家一起來分享

快速學習python交流總群:619307290 &>483546416


我是從讀博的時候,才開始使用python的,當時是因為很多深度學習的庫用python寫的。剛剛用的時候,我看完《python入門與實踐》裡面除了python的基本功能外,還有幾個實踐應用:聊天工具、可視化等等,我覺得不錯。

如果你是本科學生,你可能是想熟悉下Class、函數管理、調用,然後再熟悉下HTTP、TCP 等基本的網路,還有資料庫。

如果是想學類抽象、網路、資料庫

我建議你寫一個聊天軟體吧,只要在Terminal 上能讓兩台電腦通訊就行。telnet

我當時是用 MongoDB 做資料庫,TCP 做通訊方法。GitHub - zsdonghao/ChatServerTCP: 保密型聊天軟體伺服器 /Private Chat Server

可能你會問為什麼用 TCP 不用 HTTP, 那是因為HTTP 比較簡單,但通訊速度慢,我當時是想如果未來需要做一些實時性強的應用,比如網路遊戲。則肯定需要TCP了,需要各種握手、確認IP身份,等等。

但如果你不需要那麼強的實時性,只是想練練手,你可以用 Flask ,這是一個很簡單的 HTTP 庫,5分鐘能學會。

如果你只是想學類抽象

如果你只是想熟悉類抽象,想很好地記住它。我記得帝國理工以前教類抽象時, 是用國際象棋當作遊戲的。但你可能會問,寫一個界面也太麻煩了吧?其實當時學生不需要寫界面,老師給一組下棋紀錄給學生,學生讓程序跟著跑,如果沒有出錯,就代表程序ok了。

這看起來不怎麼帥,但這個作業確實能讓你很好地了解類抽象。

如果想學爬蟲、數據挖掘、資料庫

建議寫一個上海證監會公告爬蟲,我以前寫了一個放到github的,但朋友說要用,讓我把它刪了。。。 你可以每5分鐘掃描以下網頁,若有新公告發出,你就把pdf下載下來,然後把pdf文字提取出來,分開題目、發布時間等等,然後存在 MongoDB 裡面。

然後再做一個搜索工具,比如輸入一個關鍵字,把相關的公告自動找出來,把pdf源文複製到指定目錄,等等。


在 Python 豐富而且有趣,專業而又不失活潑的第三方模塊的友情協助下,百行代碼的練手項目很有意思了,我在做爬蟲的過程中,遇到了很多需要登錄的網站,所以我就寫了個模擬登錄的小項目,GitHub - xchaoinfo/fuck-login: 模擬登錄一些知名的網站,為了方便爬取需要登錄的網站 通過學習寫模擬登錄,通過模擬登錄,能學到什麼,我在這裡做了簡單介紹 如何入門 Python 爬蟲? - 陳保保的回答 代碼還有需要改進的地方,歡迎大家一起來 pull request


這個怎麼好說,python應用範圍太廣了,1000行的爬蟲,1000行的圖形處理演算法,1000行的簡單深度學習,1000行的簡單遊戲伺服器邏輯,1000行的調試器(如grayhat一書的例子).....太多了,這樣一直舉例子舉下去可能天都亮了......


看你練習哪方面?

一、機器學習

這方面涉及到自然語言處理,圖像處理,或者就是單純的演算法實現,還有一個比較偏的 叫多 體素模式識別(功能磁共振方面)。

自然語言處理:

專門有一本書,就是系統的介紹用 python做自然語言處理 我不是做這方面的 不太了解 但是我們實驗室做 分詞 自然語言處理 都用這個玩意

圖像處理

這個我沒接觸過,但是個人覺得找篇圖像處理,計算機視覺方面的論文,實現一下他的 代碼,或者找matlab代碼翻譯成python 在計算機視覺方面python現在很火 同學就是用這個做信息可視化的

機器學習基礎

推薦機器學習實戰,python版的,就是一些基礎演算法的實現,然後簡單應用,比如手寫字 體的識別,垃圾郵件的分類

二、web開發:

python其實被認為做系統更加合適,但是也有人認為python做web本身就很合適。對於web這一塊,我用了一下 django這個框架,這個框架目前很流行,但是有弊端,耦合度比較緊密,我用的時間段,也沒怎麼深入了解。還有經常聽人說的兩個框架就是,web.py和Tornado。這兩個我沒用過。

爬蟲類工具編寫:

這個應該屬於web類,個人覺得用這個東東寫爬蟲還是容易的,當然我說的是新手上手容易。你要學這類方面的,其實從網上找寫現成的爬蟲工具就行。比如有些人專門寫關於 爬糗事百科 的博客。裡面有源碼,你可以看看。

三、遊戲開發

我見過有人用python寫2048遊戲,但是用的原生的代碼寫出來的,沒有用python 的遊戲框架,我也不清楚有沒有這類框架或者工具包,而且我也不懂python是否適合寫遊戲。

之所以分開講,就是為了讓題主明白自己的學習方向。題主自己把握就好。我python菜鳥一個,就是三天打漁兩天晒網。


要做1000行代碼的,對Python應該已經比較熟悉了,可以試試下面幾個進階的練手項目。如果剛入門,下面答案里推薦了24個Python入門到綜合的練手項目:

Python 的練手項目有哪些值得推薦? - Wayne Shi 的回答

進階篇

1.Python - Python實現Python解釋器

從實現一個玩具解釋器開始學習解釋器基本知識,然後考察Python位元組碼進一步學習理解Python解釋器的內部機制,最終實現一個500行以內的Python解釋器。

2.Python - 基於Flask/RethinkDB/Backbone.js實現TODO List

使用 RethinkDB,Flask 與 Backbone.js 製作一個簡單的 todo list。

3.Python - Flask開發輕博客

使用Python Flask Web框架開發一個具備基本功能的輕博客平台,在其中學習Python的Web開發。

4.Python - Django 搭建簡易博客

本教程介紹如何一步步使用 Django 開發一個簡單的博客 Web應用,涉及 Django Web開發,MVC,Template等知識點,適用於有 Python 和 Django 基礎的同學。


《阿里巴巴技術協會-Python與設計模式系列課程》10-20今日更新: 10、Python與設計模式--享元模式-博客-雲棲社區-阿里雲

11、Python與設計模式--橋樑模式-博客-雲棲社區-阿里雲

12、Python與設計模式--策略模式-博客-雲棲社區-阿里雲

13、Python與設計模式--責任鏈模式-博客-雲棲社區-阿里雲

14、Python與設計模式--命令模式-博客-雲棲社區-阿里雲

15、Python與設計模式--中介者模式-博客-雲棲社區-阿里雲

16、Python與設計模式--模板模式-博客-雲棲社區-阿里雲

17、Python與設計模式--迭代器模式-博客-雲棲社區-阿里雲

18、Python與設計模式--訪問者模式-博客-雲棲社區-阿里雲

19、Python與設計模式--觀察者模式-博客-雲棲社區-阿里雲

20、Python與設計模式--解釋器模式-博客-雲棲社區-阿里雲

有關Python學習,小編在此將《阿里巴巴技術協會-Python與設計模式系列課程》 分享給各位同學,今日更新0-9: 0、Python與設計模式--前言-博客-雲棲社區-阿里雲

1、Python與設計模式--單例模式-博客-雲棲社區-阿里雲

2、Python與設計模式--工廠類相關模式-博客-雲棲社區-阿里雲

3、Python與設計模式--建造者模式-博客-雲棲社區-阿里雲

4、Python與設計模式--原型模式-博客-雲棲社區-阿里雲

5、Python與設計模式--代理模式-博客-雲棲社區-阿里雲

6、Python與設計模式--裝飾器模式-博客-雲棲社區-阿里雲

7、Python與設計模式--適配器模式-博客-雲棲社區-阿里雲

8、Python與設計模式--門面模式-博客-雲棲社區-阿里雲

9、Python與設計模式--組合模式-博客-雲棲社區-阿里雲

這裡有三個爬取實踐內容推薦給樓主和各位小夥伴:
[python爬蟲] Selenium定向爬取PubMed生物醫學摘要信息[python爬蟲] Selenium定向爬取PubMed生物醫學摘要信息
本文主要是自己的在線代碼筆記。在生物醫學本體Ontology構建過程中,我使用Selenium定向爬取生物醫學PubMed資料庫的內容。 PubMed是一個免費的搜尋引擎,提供生物醫學方面的論文搜尋以及摘要。

[python爬蟲] Selenium爬取新浪微博內容及用戶信息
在進行自然語言處理、文本分類聚類、推薦系統、輿情分析等研究中,通常需要使用新浪微博的數據作為語料,這篇文章主要介紹如果使用Python和Selenium爬取自定義新浪微博語料。因為網上完整的語料比較少,而使用Selenium方法有點簡單、速度也比較慢,但方法可行,同時能夠輸入驗證碼。希望文章對你有所幫助~

[python爬蟲] Selenium定向爬取虎撲籃球海量精美圖片
在進行自然語言處理、文本分類聚類、推薦系統、輿情分析等研究中,通常需要使用新浪微博的數據作為語料,這篇文章主要介紹如果使用Python和Selenium爬取自定義新浪微博語料。因為網上完整的語料比較少,而使用Selenium方法有點簡單、速度也比較慢,但方法可行,同時能夠輸入驗證碼。希望文章對你有所幫助~
此話題阿里云云棲社區已關注,後續持續更新中
有關Python學習,小編在此將《阿里巴巴技術協會-Python與設計模式系列課程》
分享給各位同學,今日更新0-9:

0、Python與設計模式--前言-博客-雲棲社區-阿里雲

1、Python與設計模式--單例模式-博客-雲棲社區-阿里雲

2、Python與設計模式--工廠類相關模式-博客-雲棲社區-阿里雲

3、Python與設計模式--建造者模式-博客-雲棲社區-阿里雲

4、Python與設計模式--原型模式-博客-雲棲社區-阿里雲

5、Python與設計模式--代理模式-博客-雲棲社區-阿里雲

6、Python與設計模式--裝飾器模式-博客-雲棲社區-阿里雲

7、Python與設計模式--適配器模式-博客-雲棲社區-阿里雲

8、Python與設計模式--門面模式-博客-雲棲社區-阿里雲

9、Python與設計模式--組合模式-博客-雲棲社區-阿里雲

親們阿里云云棲社區已開通專欄,歡迎關注閱讀:我是程序員 - 知乎專欄


寫個編譯器唄


這裡列的項目代碼只有500行,500行,500行左右噢,

不只有爬蟲、不只有爬蟲、不只有爬蟲噢

aosabook/500lines · GitHub

實現都比較精妙,可謂麻雀雖小五臟俱全。我覺得這些都可以作為練習的題目。

有一個網站叫github、有一個網站叫github、有一個網站叫github


給你推薦一個有趣的練手項目:

Ricequant - Beta

python可以做很多事情,但是有什麼能夠和寫一個 程序全自動炒股相比呢?

你可以從很簡單的策略寫起,比如寫個買入市場市盈率最低的100支股票,簡單吧,但是效果在過去10年里取得了20倍的收益

市盈率單因子策略

你也可以玩一玩複雜的機器學習,看看人工智慧能不能打敗這個市場:

滬深300指數的特徵工程和聚類分析

正巧我們最近在辦比賽,練練手還有豐富的獎金和獎品等著你喲!

要是一不小心拿了前三名,我們還會為你提供交易資金呢!

快來看看吧~

Ricequant - Beta


SICP應該足夠經典吧,裡面最後一章關於編譯的那部分有個很好的項目:寫一個對 Scheme (Lisp 方言) 的編譯器。SICP是用 Lisp 寫 Lisp 編譯器;同樣,用 Python 寫 Lisp 編譯器也是一個非常優秀的項目(事實上,由於 Python 的一些特性比如內置的高階函數,個人感覺寫起來可能會比 Java 什麼的更好寫一些)。自己分別實現 parser, 環境,各個函數,eval, REPL (read-eval-print-loop), 最後試著做尾遞歸優化,這樣能對 Lisp, Python 以及編譯原理都會有更深的了解。

這個項目是我校CS入門課的最後一個項目,這裡是開源的課本和項目介紹:

課本:Composing Programs

項目:Scheme

課本是教授基於「用 Python 教 SCIP 的內容」編寫的,只不過所有內容都是純英文的了。

在這門課里這個項目其實是「填空」,大框架已經搭好了,只需要實現剩下的部分了;如果想真正練習的話還是應該完全自己實現。


用Python 3實現一個Shadowsocks服務端/客戶端,只支持AES並且完全不管性能等等的話,1000行應該夠了。

之後你可以考慮逐步加入新功能,比如說支持更多的cipher,加入流量統計,解決一下C10K問題,給客戶端加個基於Qt5或者Tk的GUI界面什麼的,中途每次升級都可以和官方的服務端連一連試試。


我在github上做了個項目,專門收集,簡單易上手的項目:https://github.com/521xueweihan/HelloGithub


推薦閱讀:

十萬行以下有哪些值得學習的開源項目?
請推薦一些小型的C語言開源項目?
github上有什麼好的unity開源項目?
開源許可證都有什麼區別,一般開源項目用什麼許可證?
OIer對於開源的態度如何?

TAG:Python | 編程 | 開源項目 | Python框架 |