我從Python新手到大師的百天之路(內附學習資源)

給大家推薦一個Python資源。

有位名叫駱昊 (jackfrued) 的資深程序員,爲大家規劃了一條從“從新手到大師”的百天之路。

從全方位熟悉語言,到Python的進階用法,再到天南地北的實戰攻略:只要沿着這條路走下去,就都會遇到的。

這個項目已經在GitHub摘下8100星

駱先生還在日程表的上方,溫柔地鼓勵了大家:

Python是一個“優雅”、“明確”、“簡單”的編程語言。
學習曲線低,非專業人士也能上手。

你一定也想知道,這100天都會經歷些什麼。

開始是萌新

最初的15天,都是Python語言基礎的修煉。基本功很重要,每日內容也很豐滿:

Day01~15 - Python語言基礎

Day01 - 初識Python

  • Python簡介 - Python的歷史 / Python的優缺點 / Python的應用領域
  • 搭建編程環境 - Windows環境 / Linux環境 / MacOS環境
  • 從終端運行Python程序 - Hello, world / print函數 / 運行程序
  • 使用IDLE - 交互式環境(REPL) / 編寫多行代碼 / 運行程序 / 退出IDLE
  • 註釋 - 註釋的作用 / 單行註釋 / 多行註釋

Day02 - 語言元素

  • 程序和進制 - 指令和程序 / 馮諾依曼機 / 二進制和十進制 / 八進制和十六進制
  • 變量和類型 - 變量的命名 / 變量的使用 / input函數 / 檢查變量類型 / 類型轉換
  • 數字和字符串 - 整數 / 浮點數 / 複數 / 字符串 / 字符串基本操作 / 字符編碼
  • 運算符 - 數學運算符 / 賦值運算符 / 比較運算符 / 邏輯運算符 / 身份運算符 / 運算符的優先級
  • 應用案例 - 華氏溫度轉換成攝氏溫度 / 輸入圓的半徑計算周長和麪積 / 輸入年份判斷是否是閏年

Day03 - 分支結構

  • 分支結構的應用場景 - 條件 / 縮進 / 代碼塊 / 流程圖
  • if語句 - 簡單的if / if-else結構 / if-elif-else結構 / 嵌套的if
  • 應用案例 - 用戶身份驗證 / 英制單位與公制單位互換 / 擲骰子決定做什麼 / 百分制成績轉等級制 / 分段函數求值 / 輸入三條邊的長度如果能構成三角形就計算周長和麪積

Day04 - 循環結構

  • 循環結構的應用場景 - 條件 / 縮進 / 代碼塊 / 流程圖
  • while循環 - 基本結構 / break語句 / continue語句
  • for循環 - 基本結構 / range類型 / 循環中的分支結構 / 嵌套的循環 / 提前結束程序
  • 應用案例 - 1~100求和 / 判斷素數 / 猜數字遊戲 / 打印九九表 / 打印三角形圖案 / 猴子吃桃 / 百錢百雞

Day05 - 構造程序邏輯

  • 經典案例:水仙花數 / 百錢百雞 / Craps賭博遊戲
  • 練習題目:斐波那契數列 / 完美數 / 素數

Day06 - 函數和模塊的使用

  • 函數的作用 - 代碼的壞味道 / 用函數封裝功能模塊
  • 定義函數 - def語句 / 函數名 / 參數列表 / return語句 / 調用自定義函數
  • 調用函數 - Python內置函數 / 導入模塊和函數
  • 函數的參數 - 默認參數 / 可變參數 / 關鍵字參數 / 命名關鍵字參數
  • 函數的返回值 - 沒有返回值 / 返回單個值 / 返回多個值
  • 作用域問題 - 局部作用域 / 嵌套作用域 / 全局作用域 / 內置作用域 / 和作用域相關的關鍵字
  • 用模塊管理函數 - 模塊的概念 / 用自定義模塊管理函數 / 命名衝突的時候會怎樣(同一個模塊和不同的模塊)

Day07 - 字符串和常用數據結構

  • 字符串的使用 - 計算長度 / 下標運算 / 切片 / 常用方法
  • 列表基本用法 - 定義列表 / 用下表訪問元素 / 下標越界 / 添加元素 / 刪除元素 / 修改元素 / 切片 / 循環遍歷
  • 列表常用操作 - 連接 / 複製(複製元素和複製數組) / 長度 / 排序 / 倒轉 / 查找
  • 生成列表 - 使用range創建數字列表 / 生成表達式 / 生成器
  • 元組的使用 - 定義元組 / 使用元組中的值 / 修改元組變量 / 元組和列表轉換
  • 集合基本用法 - 集合和列表的區別 / 創建集合 / 添加元素 / 刪除元素 / 清空
  • 集合常用操作 - 交集 / 並集 / 差集 / 對稱差 / 子集 / 超集
  • 字典的基本用法 - 字典的特點 / 創建字典 / 添加元素 / 刪除元素 / 取值 / 清空
  • 字典常用操作 - keys()方法 / values()方法 / items()方法 / setdefault()方法
  • 基礎練習 - 跑馬燈效果 / 列表找最大元素 / 統計考試成績的平均分 / Fibonacci數列 / 楊輝三角
  • 綜合案例 - 雙色球選號 / 井字棋

Day08 - 面向對象編程基礎

  • 類和對象 - 什麼是類 / 什麼是對象 / 面向對象其他相關概念
  • 定義類 - 基本結構 / 屬性和方法 / 構造器 / 析構器 / __str__方法
  • 使用對象 - 創建對象 / 給對象發消息
  • 面向對象的四大支柱 - 抽象 / 封裝 / 繼承 / 多態
  • 基礎練習 - 定義學生類 / 定義時鐘類 / 定義圖形類 / 定義汽車類

Day09 - 面向對象進階

  • 屬性 - 類屬性 / 實例屬性 / 屬性訪問器 / 屬性修改器 / 屬性刪除器 / 使用__slots__
  • 類中的方法 - 實例方法 / 類方法 / 靜態方法
  • 運算符重載 - __add__ / __sub__ / __or__ /__getitem__ / __setitem__ / __len__ / __repr__ / __gt__ / __lt__ / __le__ / __ge__ / __eq__ / __ne__ / __contains__
  • 類(的對象)之間的關係 - 關聯 / 繼承 / 依賴
  • 繼承和多態 - 什麼是繼承 / 繼承的語法 / 調用父類方法 / 方法重寫 / 類型判定 / 多重繼承 / 菱形繼承(鑽石繼承)和C3算法
  • 綜合案例 - 工資結算系統 / 圖書自動折扣系統 / 自定義分數類

Day10 - 圖形用戶界面和遊戲開發

  • 使用tkinter開發GUI程序
  • 使用pygame三方庫開發遊戲應用
  • “大球吃小球”遊戲

Day11 - 文件和異常

  • 讀文件 - 讀取整個文件 / 逐行讀取 / 文件路徑
  • 寫文件 - 覆蓋寫入 / 追加寫入 / 文本文件 / 二進制文件
  • 異常處理 - 異常機制的重要性 / try-except代碼塊 / else代碼塊 / finally代碼塊 / 內置異常類型 / 異常棧 / raise語句
  • 數據持久化 - CSV文件概述 / csv模塊的應用 / JSON數據格式 / json模塊的應用

Day12 - 字符串和正則表達式

  • 字符串高級操作 - 轉義字符 / 原始字符串 / 多行字符串 / in和 not in運算符 / is開頭的方法 / join和split方法 / strip相關方法 / pyperclip模塊 / 不變字符串和可變字符串 / StringIO的使用
  • 正則表達式入門 - 正則表達式的作用 / 元字符 / 轉義 / 量詞 / 分組 / 零寬斷言 /貪婪匹配與惰性匹配懶惰 / 使用re模塊實現正則表達式操作(匹配、搜索、替換、捕獲)
  • 使用正則表達式 - re模塊 / compile函數 / group和groups方法 / match方法 / search方法 / findall和finditer方法 / sub和subn方法 / split方法
  • 應用案例 - 使用正則表達式驗證輸入的字符串

Day13 - 進程和線程

  • 進程和線程的概念 - 什麼是進程 / 什麼是線程 / 多線程的應用場景
  • 使用進程 - fork函數 / multiprocessing模塊 / 進程池 / 進程間通信
  • 使用線程 - thread模塊 / threading模塊 / Thread類 / Lock類 / Condition類 / 線程池

Day14 - 網絡編程入門和網絡應用開發

  • 計算機網絡基礎 - 計算機網絡發展史 / “TCP-IP”模型 / IP地址 / 端口 / 協議 / 其他相關概念
  • 網絡應用模式 - “客戶端-服務器”模式 / “瀏覽器-服務器”模式
  • 基於HTTP協議訪問網絡資源 - 網絡API概述 / 訪問URL / requests模塊 / 解析JSON格式數據
  • Python網絡編程 - 套接字的概念 / socket模塊 / socket函數 / 創建TCP服務器 / 創建TCP客戶端 / 創建UDP服務器 / 創建UDP客戶端 / SocketServer模塊
  • 電子郵件 - SMTP協議 / POP3協議 / IMAP協議 / smtplib模塊 / poplib模塊 / imaplib模塊
  • 短信服務 - 調用短信服務網關

Day15 - 圖像和文檔處理

  • 用Pillow處理圖片 - 圖片讀寫 / 圖片合成 / 幾何變換 / 色彩轉換 / 濾鏡效果
  • 讀寫Word文檔 - 文本內容的處理 / 段落 / 頁眉和頁腳 / 樣式的處理
  • 讀寫Excel文件 - xlrd模塊 / xlwt模塊
  • 生成PDF文件 - pypdf2模塊 / reportlab模塊

第一天,按照教程的步驟,搭好編程環境,充實的生活就可以展開了。

第二天是語言元素,第三天分支結構,第四天循環結構。比如,打開循環結構這一小節,會看到這類結構的用途講解,各種語句的有毒基礎用法,以及小練習 (如下) 。

while循環:

"""
猜數字遊戲
計算機出一個1~100之間的隨機數由人來猜
計算機根據人猜的數字分別給出提示大一點/小一點/猜對了

Version: 0.1
Author: 駱昊
"""

import random

answer = random.randint(1, 100)
counter = 0
while True:
    counter += 1
    number = int(input('請輸入: '))
    if number < answer:
        print('大一點')
    elif number > answer:
        print('小一點')
    else:
        print('恭喜你猜對了!')
        break
print('你總共猜了%d次' % counter)
if counter > 7:
    print('你的智商餘額明顯不足')

 

第五天,就是初步總結和小測的日子了。看上去,測試題還很生動:

後面的10天,大致是這樣:

第六天:函數和模塊的使用
第七天:字符串和常用數據結構
第八天:面向對象編程基礎
第九天:面向對象進階
第十天:圖形用戶界面和遊戲開發
第十一天:文件和異常
第十二天:字符串和正則表達式
第十三天:進程和線程
第十四天A:網絡編程入門
第十四天B:網絡應用開發
第十五天:圖像和文檔處理

其中,第十章是真·遊戲課,會講到“炮彈打中了飛機”“箱子摔在了地面上”這樣的碰撞該怎麼寫,還要寫個“大球吃小球”的遊戲。

節奏這樣歡快,這樣治癒,你就不會放棄了吧。

至少,過了這15天,就不是個純純的萌新了。

進階與實踐

基礎打好之後,第16-20天,是Python語言進階修煉。

你會把前面15天的修煉成果升級一波:用上不同的數據結構、算法,熟悉各種高級的操作。

這5天裏,依然有許多有趣又經典的例子,比如在講貪心算法的時候:

假設小偷有一個揹包,最多能裝20公斤贓物,他闖入一戶人家,發現如下表所示的物品。顯然,他不能把所有物品都裝進揹包,所以必須確定拿走哪些物品,留下哪些物品。

當然,遊戲還是不能少,本章有紙牌遊戲可以寫着玩。

完成前20天的任務,你就是個小有經驗的Python程序猿了。

再經過20天的姿勢補充,就變得更加豐盈:

第21-30天:Web前端入門
第31-35天:玩轉Linux操作系統
第36-40天:數據庫基礎和進階

這時,可以走出家門,去廣闊的天地裏實踐了:

第41-55天:Django實戰
第55-65天:Flask實戰
第66-75天:爬蟲開發
第76-90天:數據處理和機器學習
第90-100天:團隊項目開發

你可能已經發現了,“數據處理和機器學習”是最持久的一章,歷時15天

從各類Python庫的用法,到決策樹、貝葉斯分類、支持向量機這些常用方法,再到機器學習實戰,這個章節都覆蓋了。

美中不足,這章的教程似乎還沒有更新完全。不過,但前面的75天,已經可以盡情探索了。

就算你已經不是純純的萌新,還是可以找到自己需要的章節,定點修煉。

那麼,快開始吧:https://github.com/jackfrued/Python-100-Days

最後再給大家推薦一個Python視頻教程資源:https://www.cnblogs.com/java2018/p/12114770.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章