Python 的練手項目有哪些值得推薦?

我不是伸手黨,在網上搜了很多類似的問答,沒有很滿意的答案。我基本上把python的基本語法看完了,還花了一個月左右的時間

Yixiaohan/show-me-the-code · GitHub

裡面的題目啃完了,對python有了一個大致的了解,現在想用python來做一個完整的項目,有沒有大神推薦github上的項目,我自己大致看了一下,覺得這個基於node.js的豆瓣命令行很不錯:

想用python重寫一遍,不料我身邊已經有同學捷足先登了,提前實現了,這即使我做完之後都不好意思在他面前裝逼了,不知道各位還有沒有發現別的不錯的python項目,最好是綜合性的,不要是網站,謝了,題主是一個計算機相關專業大三學生,有一定編程基礎。


更新:兄弟們如此給力,小弟受寵若驚,好東西就是用來分享的。 500 line or less只是某個系列叢書中第四本,其他三本鏈接:
http://www.aosabook.org/en/index.html
可以在線看哦
前兩本每章介紹出名開源軟體的架構,你說的上名字的開源基本上都能找到,短小精悍的介紹框架
第三本介紹開源軟體中實際遇到的一些performance的問題以及解決方案,同樣濃縮啊!! 每章的作者大多就是此開軟軟體的開發者啊!!!
不用多說,點開你就知道啊
不想看英文的怒點 http://www.ituring.com.cn/article/13057
前兩卷的中文版,不知道翻譯的怎麼樣

----------------------------------------割了你--------------------------------------------------------------

和樓主一樣在學習python, 最近找到一本python神書 500 line or less. 有兄弟提到了git的源碼,這裡不只是源碼,而是這麼一本書,目前還沒出版,但是在網上有已經看到了 review版本。
強烈推薦!!!
強烈推薦!!!
強力推薦!!!
這本書共16個章節,每章均是由該領域的大牛完成,用不到500行的代碼實現一個特(裝)定(逼)功能。
本書鏈接 http://aosabook.org/blog/
目錄頁:http://aosabook.org/blog/
以下是章節目錄,每一章都讓你熱血澎湃,看完介紹你就嚮往下讀。
1. A Template Engine (http://aosabook.org/en/500L/a-template-engine.html)
MVC模型中的view層如何解析html中的靜態變數和簡單的語句,如下:

&

Welcome, {name}!& &

Products:& & {products}
&

web中的view層不只是html代碼,還有支持其他的代碼。比如 {products}是一個變數。 同時view層還支持{if} , {for}, {foreach}等等。django,velocity等是如何解析他們的?
大牛用不到500行代碼告訴你,是如何實現的? (不是替換,替換需要每次請求都需要解析)

2. Web Spreadsheet (http://aosabook.org/en/500L/web-spreadsheet.html)
web的電子表格如何實現的? 好像比較簡單,但是介紹了 web storage 和 web worker,還是很值得一看的

3. A Web Crawler http://aosabook.org/en/500L/a-web-crawler-with-asyncio-coroutines.html
不多說,幾百行代碼實現高效的網路爬蟲, 高效!

4. Static Analysis http://aosabook.org/en/500L/static-analysis.html
成熟的IDE都有代碼檢查和代碼提示,怎麼做的? 看這章

5. Clustering by Consensus http://aosabook.org/en/500L/clustering-by-consensus.html
分散式系統 paxos原理與實現。不知道paxos說明你沒接觸過分散式體統,接觸過分散式還不懂,說明你只會用分散式系統

6. A Simple Object Modle http://aosabook.org/en/500L/a-simple-object-model.html
Python是面向對象語言,對象,繼承,多態,怎麼用代碼實現的,不到500行代碼,實際不到400 行, 666.。。

7. An Archaeology-Inspired Database http://aosabook.org/en/500L/an-archaeology-inspired-database.html
如何用python實現一個資料庫,支持 query,index, transaction, 2,3百行代碼和對每個函數的講解。看完你就知道知道資料庫原理,太值了

8. Dog Bed Database http://aosabook.org/en/500L/dbdb-dog-bed-database.html
類似上一章,不過這次實現的是key-value的非關係型資料庫,詳細的講解和2,3百行代碼

9. A 3D Modeller http://aosabook.org/en/500L/a-3d-modeller.html
用python實現一個3D設計,顯示到屏幕,可以交互。不是很懂,但不明覺厲

10. A Python Interpreter Written in Python http://aosabook.org/en/500L/a-python-interpreter-written-in-python.html
手把手教你如何實現python解析器。

11. A Pedometer in the Real World http://aosabook.org/en/500L/a-pedometer-in-the-real-world.html
你用過手機應用記錄你每天走的步數,然後發送到朋友圈嗎? (沒有? 沒關係。)這章告訴你如何實現步數記錄,怎麼算走一步。手機中有加速記,很容易獲得你某一時刻在x,y,z三個方向的加速度,用這些參數,如何計算你走了多少步? 知道嗎? 不知道,看這章,講解加實現

12. A Continuous Intergration System http://aosabook.org/en/500L/a-continuous-integration-system.html
CI System是一個專門用來測試新代碼的系統,根據代碼提交記錄,拿到新的代碼,測試,生成報告。這不是關鍵,關鍵是 如果test失敗,它還會 恢復,然後從失敗的那個點在跑,相當於把出錯環境重現了。。。

13 A Rejection Sampler http://aosabook.org/en/500L/a-rejection-sampler.html
不是很懂,和機器學習相關,如何 計算你贏得象棋比賽的概率,天氣對飛機的影響等類似的問題

14 A visual programming toolkit http://aosabook.org/en/500L/blockcode-a-visual-programming-toolkit.html
不太明白

15. A Flow Shop Scheduler http://aosabook.org/en/500L/a-flow-shop-scheduler.html
flowshop調度問題,好像很出名的樣子,最優化問題,如何從局部最優解找全局最優解

16 Optical Character Recognition
幾百行代碼使用人工神經網路實現識別手寫字母。。。

github源碼:500lines/README.md at master · aosabook/500lines · GitHub


Ctrl + F搜索一下居然沒人寫CheckiO!!??

當然,如果是Python大牛的話,去Kaggle什麼的想怎麼練就怎麼練,但是如果是像我這樣文科生出生,還有一顆想要做理科生的心的小夥伴的話,肯定需要一個更加溫和,更有有趣,更加適合初學者練手的項目(?)來做。

這種時候必須首推 checkio 啊啊啊啊!!!!
神一樣Python(以及JS)的學習網站有木有!!!

URL:CheckiO

CheckiO是一個將Python學習變成了玩小遊戲的不可思議的網站...首頁是醬紫的:

選擇Python,創建賬號可以用Github什麼的。
進去之後是醬紫的:

感覺和WOW一樣,有著自己的領地(HOME),然後領地裡面有好多好多練習題,做完之後可以打開新的領地和新的練習題。

多種語言可以選擇,大家可以選中文省時省力,也可以選擇英語、日語、其他什麼語來同時練習外語。

但是最逆天還是這裡的練習題真的好的逆天逆得不要不要的。
給大家一個截圖,大家自己感受一下這種練習題對於初學者的幫助和友好。

網站為了防止大家不會用,還親切地配了視頻在練習題的後面,告訴大家怎麼用這裡的系統:

看完解說視頻之後點擊【Solve It】就可以進到碼農頁面了...

寫代碼,點擊【check】就可以輕鬆運行,右邊還提示錯誤。不會的題還可以看別人的解答。

說實話,好的碼農不僅需要能把程序寫動,還要寫巧。那麼,CheckiO這裡,你可以看到無數種來自個各個國家各個碼農的各種答案。相信會對大家有幫助的。

別的不多說了,如果你是初學者,等什麼,速度點擊去看看吧:CheckiO is a code game coders


補充了幾個數據分析的項目,目前是33個Python項目,會繼續保持更新。Learn by doing才是正確的技術學習姿勢。

20171009更新:

NBA常規賽結果預測--利用Python進行比賽數據分析

Python 氣象數據分析

20161230更新:

Python基於共現提取《釜山行》人物關係

20160918更新:

Python - Python3 實現火車票查詢工具

20160816更新:

Python - 高德API+Python解決租房問題

20160802更新:

Python - Python3 色情圖片識別

………………………………………………分隔線………………………………………………

最近幾天剛好在整理Python項目,項目由易到難,代碼量從幾十行到幾千行,在實驗環境里保證可以全部完成。找到你認為有趣的去實現它,把項目做出來,知識才能變成自己的:)

(建議PC端訪問,邊看教程邊在環境里動手實踐,手機上僅可查看教程)

入門和進階篇均為免費課程,可以免費使用在線練習環境。

入門篇

1.Python - Python 圖片轉字元畫

50 行 Python 代碼完成圖片轉字元畫小工具。

2.Python - 200行Python代碼實現2048

僅用200行的python代碼完成2048小遊戲的編寫。

3.Python - pygame開發打飛機遊戲

使用Python快速開發一款PC端玩耍的微信打飛機遊戲,基於pygame實現。

4. Python 實現簡單畫板

要利用 Pygame 模塊來自己實現一個功能更加簡單的畫板。

5.Python - 全面解析PythonChallenge

本課程帶領大家一步一步攻克Python Challenge中的難題,在一個又一個腦洞大開的 Python 問題中提升自己的 Python 水平。

6.Python - 使用 Python 解數學方程

介紹如何用python解決數學題。 說到數學題,相信大家都不陌生,從小學到大學都跟數學打交道。 其中初中的方程組,高中的二次曲線,大學的微積分最為頭疼,今天我們將使用python 來解決方程組問題,微積分問題,矩陣化簡。

7.Python - 基於 Python 的文件備份

Python 做個簡單的備份腳本程序,可以備份主目錄和系統文件等。

8.Python - Kaggle入門:泰坦尼克號倖存者項目

Kaggle是一個線上數據科學競賽類網站。本課程將使用python科學計算工具對Kaggle提供的泰坦尼克號上的人員數據進行分析建模。

9.Python - Python文本解析器
使用Python來解析純文本生成一個HTML頁面的小程序。

10.Python - Python3實現簡單的FTP認證伺服器

日常生活中我們共享文件都是通過QQ,微信等軟體來實現的,今天將通過本課程將教大家使用Python在自己的電腦上架設一個FTP伺服器,用來管理自己日常生活中的文件。

11.Python - Python 3 實現 Markdown 解析器

本課程我們將使用 Python 3 打造 Markdown 文本解析器,並且程序支持輸出 HTML 格式與 PDF 格式的文件。

12.Python - Python 破解驗證碼
通過一個簡單的例子來講解破解驗證碼的原理。

13.Python - 用Python做2048遊戲
通過GUI來體驗編程的樂趣。

14.Python - Python實現簡單的Web伺服器
使用 Python 語言實現一個 Web 伺服器,探索 HTTP 協議和 Web 服務的基本原理。

進階篇

15.Python - Python3 色情圖片識別

使用 Python3 去識別圖片是否為色情圖片,我們會使用到 PIL 這個圖像處理庫,會編寫演算法來完成對劃分圖像的皮膚區域。

16.Python - Python實現3D建模工具

本課程將基於OpenGL實現一般CAD軟體都會具備的基礎功能:渲染顯示3D空間的畫面並可以操作3D空間中物體。

17.Python - Python3 實現火車票查詢工具

本課程使用 Python3 抓取 12306 網站信息提供一個命令行的火車票查詢工具。通過該項目的實現,可以熟悉 Python3 基礎及網路編程,以及 docopt,requests,prettytable 等庫的使用。

18.Python - Python實現基於協程的非同步爬蟲

探討幾種實現爬蟲的方法,從傳統的線程池到使用協程,每節課實現一個小爬蟲。另外學習協程的時候,我們會從原理入手,以ayncio協程庫為原型,實現一個簡單的非同步編程模型。

19. PyQt 實現簡易瀏覽器

基於 Python 3.4 和 PyQt 5 來學習 GUI 編程,課程分為兩次實驗,第一次實驗先簡單了解 Qt 各個組件的使用方法,第二次課程將嘗試實現一個瀏覽器。

20. Python基於共現提取《釜山行》人物關係

針對《釜山行》劇本的文本,使用python編寫代碼分析文本中人物的共現關係,完成對《釜山行》文本的人物關係提取,並利用Gephi軟體對提取的人物關係繪製人物關係圖。

21.Python - 使用 Python 3 編寫系列實用腳本

使用 Python 3 來編寫一系列的實用腳本,實驗的過程中能熟悉 Python 3 的使用,學習使用各種功能強大的模塊。

22.Python - Python實現Python解釋器

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

23.Python - 高德API+Python解決租房問題

編寫Python腳本爬取某租房網站的房源信息,利用高德的 js API 在地圖上標出房源地點,划出距離工作地點1小時內可到達的範圍,附上公交路徑規劃功能查看不同路徑的用時。

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

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

25.Python 氣象數據分析

對義大利北部沿海地區的氣象數據進行分析與可視化。

26.NBA常規賽結果預測--利用Python進行比賽數據分析

利用NBA在2015~2016年的比賽統計數據進行回歸模型建立,最終在今年2016~2017的常規賽中預測每場比賽的輸贏情況。

27.Python - Flask開發輕博客

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

28.Python - Django 搭建簡易博客

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

綜合篇

已下項目對環境佔用資源較大,屬於會員及訓練營項目。

29.Python - Python3 實現淘女郎照片爬蟲

本實驗通過使用 Python 實現一個淘寶女郎圖片收集爬蟲,學習並實踐 BeautifulSoup、Selenium Webdriver 及正則表達式等知識。

30.Python - 基於 Flask 及爬蟲實現微信娛樂機器人

本次課程是基於 Flask Web 框架開發的娛樂級別的微信公眾號後台,學習並實踐 python 編程,Flask Web 開發以及微信公眾平台開發機器人的基本步驟。

31.Python - Python版設計模式實踐

多種常見的設計模式的原理以及如何應用實踐,涵蓋工程模式,命令模式,外觀模式,適配器模式,裝飾模式,代理模式等。

32.Python - 仿OpenStack開發雲計算管理軟體

使用Python語言開發一套類似OpenStack的雲計算管理平台LouCloud,具備基本的用戶,伺服器,鏡像與虛擬機管理功能。

33.Python - 仿StackOverflow開發在線問答系統

使用Python Flask Web開發框架實現一套類似StackOverflow的在線問答平台LouQA,具備提問,回答,評論點贊等功能。


1、自己動手寫個Web Server 圖文結合,作者非常幽默風趣

Let』s Build A Web Server. Part 1Let』s Build A Web Server. Part 2Let』s Build A Web Server. Part 3

看英文吃力的看翻譯版

自己動手開發網路伺服器(一)
自己動手開發網路伺服器(二)
自己動手開發網路伺服器(三)

2、自己動手寫個解釋器,依然是樓上這位高產作者

Let』s Build A Simple Interpreter. Part 1.
Let』s Build A Simple Interpreter. Part 2.
Let』s Build A Simple Interpreter. Part 3.
Let』s Build A Simple Interpreter. Part 4.
Let』s Build A Simple Interpreter. Part 5.
Let』s Build A Simple Interpreter. Part 6.
Let』s Build A Simple Interpreter. Part 7.
Let』s Build A Simple Interpreter. Part 8.
Let』s Build A Simple Interpreter. Part 9.
Let』s Build A Simple Interpreter. Part 10.
Let』s Build A Simple Interpreter. Part 11.
Let』s Build A Simple Interpreter. Part 12.
Let』s Build A Simple Interpreter. Part 13.
Let』s Build A Simple Interpreter. Part 14.

照樣有人翻譯了

《一起來寫個簡單的解釋器(1)》
《一起來寫個簡單的解釋器(2)》
《一起來寫個簡單的解釋器(3)》
《一起來寫個簡單的解釋器(4)》
《一起來寫個簡單的解釋器(5)》
《一起來寫個簡單的解釋器(6)》
《一起來寫個簡單的解釋器(7)》
《一起來寫個簡單的解釋器(8)》

爛尾了.....,還是硬著頭皮去看原文吧

3、如果覺得上面的太難,來個簡單了,寫個Django博客

Django 博客教程:前言
1 - 搭建開發環境
2 - 建立 Django 博客應用
3 - 創建 Django 博客的資料庫模型
4 - 讓 Django 完成翻譯:遷移資料庫
5 - Django 博客首頁視圖
6 - 真正的 Django 博客首頁視圖
7 - 在 Django Admin 後台發布文章
8 - 博客文章詳情頁
9 - 支持 Markdown 語法和代碼高亮
10 - 頁面側邊欄:使用自定義模板標籤
11 - 分類與歸檔
12 - 評論
13 - 已知小問題修正
14 - 使用 Nginx 和 Gunicorn 部署 Django 博客
15 - 使用 Fabric 自動化部署

4、如果以上都覺得太無趣,寫個爬蟲獲取能激發你的學習動力,爬網上的在線教程做成電子書

https://foofish.net/python-crawler-html2pdf.html

5、大家都喜歡玩微信,如果用Python來微信,搞個機器人調戲一下妹紙什麼的更有意思

wxpy: 用 Python 玩微信,可能是最優雅的微信個人號 API

圖片來源:biezhi/wechat-robot


好吧,三十多個人關注我,沒幾個點贊的,。


---邪惡的分隔符---

你試試關注我 :) 你會收到一條來自 Python 腳本發送的私信哦~

沒用到啥難的東西,很適合練手:GitHub - nekocode/zhihuSayHi: Say Hi to your new followers in Zhihu.不過,。。首先你得懂點反編譯:#Decompile# 搞搞知乎 Beta 版~ - 『Android 還可以這樣開發』 - 知乎專欄


謝邀。


--- 2016.09.20 補充 ---


GitHub - gregmalcolm/python_koans: Python Koans 是個不錯的練手項目,我還曾經給它貢獻過代碼。在你學會Python以後可以拿它練手,一步一步的完成所有待解決的問題。


--- 補充結束 ---


我在我的專欄「Python之美 - 知乎專欄」中寫過一篇文章 教你閱讀Python開源項目代碼 - Python之美 - 知乎專欄。其中介紹了初學者和有一定經驗者可以閱讀的一些開源項目,最後也介紹了閱讀別人代碼的一些經驗,在這裡再發一下,順便加點其他的推薦:


閱讀Python開源項目代碼主要有如下三個原因:

1. 在工作過程中遇到一些問題,Google和StackOverFlow等網站找不到解決辦法,只能去翻源碼。

2. 對某些項目或者方向非常感興趣,希望深入。

3. 學習遇到瓶頸需要汲取開源項目的經驗和用法來做提高。

沒有目的的閱讀開源項目就是耍流氓。浪費了時間,但是能學到的東西也很少。怎麼樣根據自身情況去閱讀呢?

1. 和興趣以及工作契合。舉個例子,工作中沒有機會用到Celery又不是想自己造個輪子,讀它的源碼做什麼?所以要從平時能接觸到的那些項目中選取。比如我,我肯定不去看Django的代碼,因為日常工作基本遇不到,遇到了現翻就好了。

2. 一個方向只看一兩個典型的就可以了。比如Web框架,我只看過Bottle和Flask的源碼(其實之前也看過Django的,只是淺嘗輒止),而且看Bottle已經是好幾年前的事情了。並不是堆的多了更好,有時候反而選擇太多會懵。

3. 不同技術階段的選擇代碼量、複雜度不一樣的項目,下面會具體推薦。

4. 清楚自己看代碼的目的。就是你看代碼是想了解人家怎麼設計、調試BUG、還是只是想學習正確的編程用法呢?其實沒有必要細摳每個代碼細節,有時候當黑盒看,知道輸入輸出就可以了。


我個人的喜好


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

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編程技巧:

1. faif/python-patterns。使用Python實現一些設計模式的例子。

2. pallets/werkzeug。flask的WSGI工具集。其中包含了實現非常好的LocalProxy、cached_property、import_string、find_modules、TypeConversionDict等。

3. bottlepy/bottle。閱讀一個Web框架對Web開發就會有更深刻的理解,flask太大,bottle就4k多行,當然如果你有毅力和興趣直接看flask是最好了的。

4. msiemens/tinydb。了解用Python實現資料庫。

5. coleifer/peewee。了解ORM的實現。

6. pallets/click。click已經內置於在flask 0.11里,提供命令行功能,值得閱讀。

7. mitsuhiko/flask-sqlalchemy。了解一個flask插件是怎麼實現的。

除此之外Web開發者可以閱讀一些相關的項目:

1. runscope/httpbin。使用flask,網站是httpbin(1): HTTP Client Testing Service。

2. jahaja/psdash。使用flask和psutils的獲取Linux系統信息的面板應用。

3. pallets/flask-website。 flask官方網站應用。

4. pypa/warehouse。如果你使用pyramid,這個新版的PYPI網站,可以幫助你理解很多。

當然,2個學習flask重要的資源必須爆一爆:

1. GitHub - realpython/discover-flask: Full Stack Web Development with Flask。

2. The Flask Mega-Tutorial。 這個就是《Flask Web開發:基於Python的Web應用開發實戰》的原始博客。


500lines


推薦一個非常厲害的項目 GitHub - aosabook/500lines: 500 Lines or Less, 它裡面包含了22個由該領域的專家完成,用不到500行的代碼實現一個特定功能的子項目。連Guido van Rossum都親自來寫基於asyncio爬蟲了,Nick Coghlan、ajdavis也出場了。更具體的介紹可以看Python 的練手項目有哪些值得推薦? - 小小搬運工的回答。


最後再推薦一些更複雜的項目,可能不算練手的範疇,但是對於練手的技藝提高有很大幫助(您總不希望一直寫練手項目吧),可以學到更多的項目設計、編程技巧等方面的內容:


GitHub - pallets/jinja: The Jinja2 template engine

GitHub - mongodb/mongo-python-driver: PyMongo

GitHub - andymccurdy/redis-py: Redis Python Client

GitHub - getredash/redash: Make Your Company Data Driven. Connect to any data source, easily visualize and share your data.

GitHub - jmcarp/robobrowser

GitHub - idank/explainshell: match command-line arguments to their help text

GitHub - madisonmay/Tomorrow: Magic decorator syntax for asynchronous code in Python

GitHub - amoffat/sh: Python process launching

GitHub - jeffknupp/sandman: Sandman amp;amp;quot;makes things RESTamp;amp;quot;.

GitHub - benoitc/gunicorn: gunicorn amp;amp;#x27;Green Unicornamp;amp;#x27; is a WSGI HTTP Server for UNIX, fast clients and sleepy applications.

GitHub - jaraco/path.py: amp;amp;quot;Pathamp;amp;quot; object conveniently wrapping assorted file/path-related functionality

GitHub - grantjenks/sorted_containers: Python Sorted Container Types: SortedList, SortedDict, and SortedSet


因為平時會用python做一些實用的小項目,所以定期會更新。

******************2017年2月20日更新*****************
(最新的更新在最後的部分)

最近房事火爆,所以寫了個小爬蟲,每天抓取一線城市(深圳)的一手房,二手房的成交量與面積。並且寫入資料庫,等數據足夠多的時候 再繪成K線。

代碼:每天自動獲取深圳上海北京的新房二手房的成交量


******************2016年8月19日更新*****************
更新原來 推送知乎答案到kindle, 添加了模擬登陸個人賬號,自動獲取自己關注的問題id,然後抓取所有答案 推送到kindle
Link:
http://www.30daydo.com/article/7

******************2016年8月11日更新*****************
http://30daydo.com/article/94
獲取代理IP,為我所用。 因為平時爬蟲使用頻率較高,所以經常需要用到代理IP,程序自動獲取獲取網頁的免費代理IP地址和埠,使用sqlite存儲到本地資料庫,供其他爬蟲程序使用

*****************2016年7月29日更新*******************
http://www.30daydo.com/article/70
獲取每天破新高的股票(可以設定破30天,60天,x天的)

(對股票篩選很有用處,每天會保存到資料庫 ,這樣每天都會有一個記錄。準備把數據放入網站供需要人士下載)

保存tushare數據到sqlite資料庫
http://www.30daydo.com/article/73


*****************2016年7月9日更新*********************
python 批量獲取色影無忌 獲獎圖片

代碼解釋: http://www.30daydo.com/article/56
github: GitHub - Rockyzsu/fetchXitek: 獲取色影無忌月賽入圍照片 http://photo.xitek.com/

**************2016年6月30日更新******************

python 獲取 中國證券網 的公告

(中國證券網: 公告解讀-高含金量的上市公司公告解讀產品
這個網站的公告會比同花順東方財富的早一點,而且還出現過早上中國證券網已經發了公告,而東財卻拿去做午間公告,以至於可以提前獲取公告提前埋伏。

生成的公告保存在stock/文件夾下,以日期命名。 下面腳本是循壞檢測,如果有新的公告就會繼續生成。

默認保存前3頁的公告。(一次過太多頁會被網站暫時屏蔽幾分鐘)。 代碼以及使用了切換header來躲避網站的封殺。)


**************2016年6月9日更新******************************

那馬上來一個實用點的,把自己喜歡的知乎問題自動推送到kindle電子書。
當你有需求的時候,你的創造力就會出來啦~

而且用python比使用C++列印什麼水仙花數什麼的都有趣多了呢~~

代碼:
python爬蟲 推送知乎文章到kindle電子書
github: GitHub - Rockyzsu/zhihuToKindle

python 暴力破解wordpress博客後台登陸密碼
只要使用python+urllib庫,就可以循環枚舉出用戶的密碼。

python 爆解zip壓縮文件密碼
github:GitHub - Rockyzsu/zip_crash

python 多線程掃描開放埠
github: GitHub - Rockyzsu/scan_host


2017-02-08 更新 **************************************
淘寶每天自動領取金幣/京東每天自動領取金豆/蘇寧打卡獲取雲鑽 - 30天嘗試新事情
每天獲取一點點,哈哈。
github:https://github.com/Rockyzsu/red_bag

2017-02-20 更新 ***************************************
python雪球爬蟲 抓取雪球 大V的所有文章

上面的連接附有完整的實現代碼。
(有不少伸手黨直接要上面的爬取下來的電子書,私信我,給你個百度網盤)


推薦一下我的Ideabook,不僅僅有各種練手項目,還有實戰指南:

GitHub: GitHub - phodal/ideabook: Idea in Action

  • 分析網站日誌,打造訪問地圖
    • 概況
      • 背景
      • ShowCase
      • Hadoop + Pig + Jython + AmMap + ElasticSearch
    • 步驟
      • Step 1: 搭建基礎設施
      • Step 2: 解析access.log
      • Step 3: 轉換IP為GEO信息
      • Step 4: 展示數據到地圖上
      • 練習建議
  • 書籍錄入程序
    • 概況
      • 背景
      • ShowCase
      • Ionic + Zxing
    • 步驟
      • Step 1: ZXing掃描與Douban API
      • Step 2: 存儲資料庫
      • 練習建議
  • 程序員專屬Badge製作
    • 概況
      • 背景
      • ShowCase
      • SVG與SVGWrite
    • 步驟
      • Step 1: 基本圖形
      • Step 2: 高級Badge
  • Web文本編輯器
    • 概況
      • 背景
      • ShowCase
      • CKEditor + Ractive
    • 步驟
      • Step 1:
      • Step 2:
      • Step 3:
      • 練習建議
  • JavaScript打造Slide應用
    • 概況
      • 背景
      • Showcase
      • 需求
    • 步驟
      • Step 1: 基本的Slide功能
      • Step 2: 解析Markdown
      • Step 3: 事件處理
      • Step 4: 解析時間
      • Step 5: 進度條
      • Step 6: 同步
      • 練習建議
  • 編輯-發布-分離應用
    • 概況
      • 背景: 編輯-發布-開發分離
      • 用戶場景
    • 步驟
      • Step 1: 構建工具
      • Step 2: 靜態頁面生成
  • Google Map與Solr實現多邊形搜索
    • 概況
      • 背景
      • Showcase
      • Solr
    • 步驟
      • Step 1: Solr Flask
      • Step 2: Google map Polygon
  • 一份代碼打造跨平台應用
    • 概況
      • 背景
      • ShowCase
      • Ionic Electron Cordova
    • 步驟
      • Step 1: 從Web到混合應用,再到桌面應用
      • Step 2: 響應式設計
      • Step 3: 平台特定代碼
      • 未來
  • Ionic ElasticSearch打造O2O應用
    • 概況
      • 背景
      • Showcase
      • 構架設計
    • 步驟
      • Step 1: Django GIS 設置
      • Step 2: 配置Haystack
      • Step 3: Django Haystack Model創建
      • Step 4: 創建search_index
      • Step 4: Ionic ElasticSearch 創建頁面
      • Step 5: Ionic ElasticSearch Service
      • Step 6: Ionic OpenLayer 地圖顯示
  • 跨協議的物聯網平台設計
    • 概況
      • 背景
      • Showcase
    • 步驟
      • Step 1: 架構設計
      • 物聯網服務層
      • Step 2: 基本骨架
      • Step 3: 六邊形架構
      • Step 4: 整合
      • Step 5: 練習建議
  • 一步步搭建JavaScript框架: Lettuce
    • 概況
      • 背景
    • 步驟
      • Step 1: 註冊npm和bower包
      • Step 2: 生成Javascript項目框架
      • Step 3: 尋找所需要的函數
      • Step 4: 整合
      • Step 5: 測試
      • 練習建議
  • 基於Virtual DOM的測試代碼生成
    • 概況
      • 背景
      • ShowCase
      • 基本原理
    • 步驟
      • Step 1: Virtual-dom與HyperScript
      • Step 2: 標記DOM變化
  • 移動框架
    • 概況
      • 背景
      • Showcase
      • jQuery + Backbone + UnderScore + Require.JS
    • 步驟
      • Step 1: 使用Require.js管理依賴
      • Step 2: 添加路由
      • Step 3: 創建主頁View
      • Step 4: jQuery Sidr
      • Step 5: Django Tastypie示例
      • Step 6: RequireJS Plugins
      • Step 6: 簡單的博客
      • Step 7: 重構
      • Step 8: 移動CMS滑動
  • Oculus + Node.js + Three.js 打造VR世界
    • 概況
      • 背景
      • Showcase
      • 框架: Oculus Rift Node NMD
    • 步驟
      • Step 1: Node Oculus Services
      • Step 2: Node.js Oculus Hello,World
      • Step 3: Node Oculus WebSocket
      • Step 4: Oculus Effect + DK2 Control
      • Step 5: Three.js KeyHandler
      • 練習建議
  • 製作照片地圖
    • 概況
      • Background:把照片放在地圖上
      • Showcase
      • 框架: EXIF ExifRead CartoDB
    • 步驟
      • Step 1: 解析讀取照片信息
      • Step 2: 上傳數據
      • 練習建議
  • D3.js 製作技能樹
    • 概況
      • 背景
      • Showcase
      • Graphviz
    • 步驟
      • Step 1: 打造簡單的技能樹
      • Step 3: D3.js Tooltipster
  • 技術雷達趨勢
    • 概況
      • 背景
      • Showcase
      • D3.js
    • 步驟
      • Step 1: Schema與原始代碼
      • Step 2: 處理數據
  • 文本轉化為Logo
    • 概況
      • 背景
      • ShowCase
      • 需求說明
    • 步驟
      • Step 1: Python 文字轉Logo實戰
  • GEOJSON與ElasticSearch實現高級圖形搜索
    • 概況
      • 背景
      • Showcase
      • jQuery + Mustache + Leaflet
    • 步驟
      • Step 1: 離線地圖與搜索
      • Step 2: 從地點到地圖上顯示
      • Step 3: 從地圖到地點上顯示

上點圖:

Django + ElasticSearch + Ionic製作移動O2O應用

Python + SVGWrite製作專屬Badge

Python生成Logo

Python獲取照片信息顯示到地圖上

Flask + Solr 製作多連形搜索


《阿里巴巴技術協會-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生物醫學摘要信息
本文主要是自己的在線代碼筆記。在生物醫學本體Ontology構建過程中,我使用Selenium定向爬取生物醫學PubMed資料庫的內容。 PubMed是一個免費的搜尋引擎,提供生物醫學方面的論文搜尋以及摘要。

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

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

作者:阿里云云棲社區 - 知乎

著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

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


首先兩點建議:

  • 最好不要寫太應用的程序練手,如果你發現你寫程序的大部分時間都在查庫手冊(或者類似的事情),那就是大家所說的「搬磚」了;要思考什麼是真正的知識,什麼只是經驗,還是那句老話:要有造輪子的水平,和不造輪子的覺悟;老只會寫寫爬蟲是造不出什麼像樣的輪子出來的
  • 對於練手的程序,要注意簡化和抽象,譬如某些可能會說「寫一個小資料庫、迷你操作系統」之類的,咋一聽好像會很有收穫,但是如果簡化不得當的話,很容易看幾篇教程就被懶得下手了,生活就是這樣,你要知道什麼只是衝動,什麼才是實用。後面我會舉例子說明如何簡化項目

Python的練手項目以 計算機科學中有哪些典型的練手項目? - 知乎 為基礎,然後再加上Python自己的特性。至於那些看似具有Python特色的語言特性,要麼就是把常見的設計模式打包成了語法糖,發明了些關鍵字,譬如生成器、裝飾器、描述器;或者就是整合其他古老語言的特點,譬如從SmallTalk那裡來的元類、從Scheme那裡來的閉包。

演算法系列-排序

Python寫swap很方便,就一句話(a, b = b, a),於是寫基於比較的排序能短小精悍。剛上手一門新語言練演算法最合適不過了,還能順便刷題,利於找工作。就演算法本身而言的話,你還可以考慮寫寫一些常見的改進,譬如快排的stable實現、加棧的非遞歸實現,你甚至還可以試試快排的各種partition策略(Lomuto,Hoare),再自己改改軸值直觀體驗下不同軸值的區別,然後甚至可以自己試試簡單的軸值選擇優化,譬如三次取平均之類的。簡單的練習,讓你受益無窮。

編譯系列

首先的簡化是不要指望一口氣寫一個完整的C編譯器,先考慮解釋器。即使只針對C一個很小的子集,還完全不做優化,沒有中間代碼,這樣其實也夠你折騰的。所以我們首先把整個後端全部省略,再把詞法分析和語法分析簡化到極致,寫一個計算器的解釋器是很好的開始,譬如解釋(1+2)*3 這樣一個簡單的算式,其實已經包含了計算機的本質——計算,計算的本質其實就是解釋。你可以先用Dijkstra的中綴轉後綴表達式演算法(Shunting-yard,我最喜歡的演算法之一)來解釋一個算式,進而研究下如何對算術表達式進行語法分析,試著用上下文無關文法來表示一個計算器的語法,然後構造抽象語法樹來解釋一個算式。

再進一步寫一個brainfuck語言的解釋器也很好,brainfuck據說是唯一一種寫它的解釋器比看懂它的hello world程序還要容易的語言(其實還有許多這種類似的蛋疼的語言,譬如whitespace),用Python實現的代碼量大概是50行左右, 之後你回頭再看brainfuck的語法,會恍然大悟,圖靈機的本質原來就是讀寫存儲器和條件跳轉!

計算器寫熟練了可以用Thompson的演算法把正則表達式構造成NFA,思路完全一樣,只是對運算符的解釋不同,然後可以再練練NFA轉DFA子集構造法、或正則表達式直接直接構造DFA,然後順便學學最小化DFA的演算法。對於正則表達式直接直接構造DFA的練習的話,可以自己實現一個flex,譬如,先把模式轉成DFA,再把DFA們並聯成一個NFA,再模擬這個NFA運行。

再進一步你可以擴展已有的計算器解釋器,譬如加入聲明、賦值與運算、循環、流程式控制制, 構成一個簡單的LL(1)語法,然後遞歸下降分析,這就可以搞一個簡易同時又圖靈完備的玩具語言出來了。

另外你也可以寫個簡單的stack machine,體會一下這種虛擬機的解釋執行和前面計算器的解釋執行的聯繫與區別。具體請看這個加州理工的作業(很簡單)。
CS 11: C track: assignment 8

如果覺得簡單的stack machine不夠過癮的話,可以寫個簡單的JVM,支持些最基本的位元組碼。這有個SJSU的練習:
A Java Implementation of the Java Virtual Machine (JVM)

在學過了理論計算機基礎以後,你甚至還可以寫個下推自動機和圖靈機的解釋器(模擬器),類似於這個:
Tools

如果你在課上還順便了解了lambda calculus,你甚至還可以再寫個lambda calculus的解釋器。在這個基礎上,如果你再進一步,你甚至還可以繼續寫個scheme的簡易解釋器,Peter Norvig有教程:
(How to Write a (Lisp) Interpreter (in Python))

當然你還可以稍微加點專業的內容,譬如解釋器的一種常用實現方式叫threaded interpreting,大致思路就是把switch case改寫一個哈希表,從操作碼直接跳轉到對應實現函數,從而避免用switch case跳來跳去處理每一個操作碼。但是用Python這種類型安全的語言無法直接實現threaded interpreting,可能需要用某些變種。

當然這些你都得寫成你的Python版本。


計算機網路系列

第一步當然是寫一個簡單的HTTP客戶端了,原因很簡單,因為HTTP大概是最簡單的應用層協議了。Python又自帶socket庫,更簡單了。這個客戶端的任務就是和伺服器建立TCP連接,然後把該發的東西打包成HTTP格式,什麼第二行是空行啊什麼的,然後發出去。再支持下所有請求方法,這樣可以逼著你去讀RFC2616。

然後可以考慮實現一個基本的ssh,你大概每天都會用ssh,難道不想做一個自己的簡易版本嗎?加密的那一部分可以模仿TLS那樣,伺服器先發公鑰,客戶端用這個公鑰加密一個對稱密鑰發回去,然後以後都用對稱密鑰通信,客戶端輸入的內容直接發給伺服器,伺服器操作以後的結果再發給客戶端,這就是一個簡單的ssh了,你甚至還可以加入對X11 Forwarding的支持。


操作系統系列

內存管理部分沒什麼可練手的,尤其還是用Python這種非系統編程語言;進程管理的話可以寫個多層次的round robin調度演算法,你不需要去調度真正的進程,模擬一下進程就行;同步的話可以試試用Python自帶的Mutex,Semaphore寫常見的並發模型,哲學家吃飯、生產消費之類的。你甚至還可以用實例感受一下CPython被大家詬病的加了解釋器全局鎖的雞肋的多線程(Concurrent但不Parallell),譬如寫一個複雜的算式分成幾個獨立的部分分給各線程然後在你的多核的機器上跑,看看跟單線程有何區別,你還可以想想CPython中在什麼情況下線程可以真正Parallel起來?

並發的部分可以寫寫幾個經典的並發場景,把互斥鎖、cv、semaphore等最常見的幾個鎖模型都用用,譬如生產者消費者模型,用用Python的thread模塊,同時了解下Global Interpreter Lock以及它導致了什麼問題。

存儲管理的話可以寫一個簡單的文件系統,這個稍微複雜一點。第一步的簡化就是用一個大的空文件作為磁碟,就不用專門找個真磁碟或者U盤了,把對磁碟的讀寫抽象成對這個文件的讀寫。基本就是實現下inode,然後包裝成一個shell,支持下最基本的命令,新建、追加、讀寫、刪除之類的操作。這個練習最有趣也最有意義的地方在於多級索引的實現,有一個VSFS的教程,C++寫起來大概1600行:

GentlyGuitar/Very-Simple-File-System:
http://pages.cs.wisc.edu/~remzi/OSTEP/file-implementation.pdf


周邊系列

你也可以試試Jython,IronPython之類的,看看和CPython比如何。然後再試試Pypy,一開始很高興,最後發現各種常見庫不支持,最後又轉回CPython,然後轉念一想,Java從1.1開始就有JIT了。

做實驗的話用Ipython把Python函數當命令跑很方便。


這些例子每一個都不複雜,最多幾百行,從頭到尾寫下來,你會發現你不僅熟練了Python,演算法、操作系統、編譯原理的基礎也順便補齊了,媽媽再也不用擔心我上課聽不懂了!


造數 - 這次帶你扒一扒 知乎日報

1、獲取源碼

import requests

url = "http://daily.zhihu.com/"
res = requests.get(url).text
print(res)

個人喜歡requests,直接訪問,發現返回500錯誤

C:Python35python.exe F:/PyCharm/爬蟲/daily.py
&&&500 Server Error& An internal server error occured.
&
&

Process finished with exit code 0

根據經驗判斷,是知乎禁止爬蟲,需要加上一些偽裝,讓我們看看加上瀏覽器偽裝效果

import requests

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"}
url = "http://daily.zhihu.com/"
res = requests.get(url,headers=headers).text
print(res)

看看結果,已經返回我們需要的數據

C:Python35python.exe F:/PyCharm/爬蟲/daily.py
&&&&知乎日報 - 每天 3 次,每次 7 分鐘&&&&&&&