python 100days github_GitHub - songhp/Python-100-Days: Python - 100天从新手到大师
Python教學大綱
Python應用領域和就業形勢分析
簡單的說,Python是一個“優雅”、“明確”、“簡單”的編程語言。
學習曲線低,適合非專業人士
開源軟件,強大的生態圈
解釋型語言,完美的平臺可移植性
支持面向對象和函數式編程
可擴展性,能調用C/C++代碼
代碼規范程度高,可讀性強
目前幾個比較流行的領域,Python都有用武之地。
云基礎設施 - Python / Java / Go
DevOps - Python / Shell / Ruby / Go
網絡爬蟲 - Python / PHP / C++
數據分析挖掘 - Python / R / Scala / Matlab
機器學習 - Python / R / Java / Lisp
Python的就業市場分析:相同工作職位和要求,薪資普遍高3k-5k。
Python服務器后臺開發 / 游戲服務器開發 / 數據接口開發
Python自動化運維
Python數據分析 / 數據可視化 / 科學計算
Python爬蟲
Python機器學習 / 聊天機器人 / 圖像識別和處理
給初學者的幾個建議(老司機的忠告):
Make English as your working language.
Practice makes perfect.
All experience comes from mistakes.
Don't be one of the leeches.
Either stand out or kicked out.
Python語言基礎
Day01 - [初識Python](./Day01~Day20 [語言基礎]/Day01/初識Python.md)
Python簡介 - Python的歷史 / Python的優缺點 / Python的應用領域
搭建編程環境 - Windows環境 / Linux環境 / MacOS環境
從終端運行Python程序 - DOS命令 / Hello, world / print函數 / 運行程序
使用IDLE - 交互式環境(REPL) / 編寫多行代碼 / 運行程序 / 退出IDLE
注釋 - 注釋的作用 / 單行注釋 / 多行注釋
Day02 - [語言元素](./Day01~Day20 [語言基礎]/Day02/語言元素.md)
程序和進制 - 指令和程序 / 馮諾依曼機 / 二進制和十進制 / 八進制和十六進制
變量和類型 - 變量的命名 / 變量的使用 / input函數 / 檢查變量類型 / 類型轉換
數字和字符串 - 整數 / 浮點數 / 復數 / 字符串 / 字符串基本操作 / 字符編碼
運算符 - 數學運算符 / 賦值運算符 / 比較運算符 / 邏輯運算符 / 身份運算符 / 運算符的優先級
應用案例 - 華氏溫度轉換成攝氏溫度 / 輸入圓的半徑計算周長和面積 / 輸入年份判斷是否是閏年
Day03 - [分支結構](./Day01~Day20 [語言基礎]/Day03/分支結構.md)
分支結構的應用場景 - 條件 / 縮進 / 代碼塊 / 流程圖
if語句 - 簡單的if / if-else結構 / if-elif-else結構 / 嵌套的if
應用案例 - 用戶身份驗證 / 英制單位與公制單位互換 / 擲骰子決定做什么 / 百分制成績轉等級制 / 分段函數求值 / 輸入三條邊的長度如果能構成三角形就計算周長和面積
Day04 - [循環結構](./Day01~Day20 [語言基礎]/Day04/循環結構.md)
循環結構的應用場景 - 條件 / 縮進 / 代碼塊 / 流程圖
while循環 - 基本結構 / break語句 / continue語句
for循環 - 基本結構 / range類型 / 循環中的分支結構 / 嵌套的循環 / 提前結束程序
應用案例 - 1~100求和 / 判斷素數 / 猜數字游戲 / 打印九九表 / 打印三角形圖案 / 猴子吃桃 / 百錢百雞
Day05 - [總結和練習](./Day01~Day20 [語言基礎]/Day05/練習.md)
基礎練習 - 水仙花數 / 完美數 / 五人分魚 / Fibonacci數列 / 回文素數
綜合練習 - Craps賭博游戲
Day06 - [函數和模塊的使用](./Day01~Day20 [語言基礎]/Day06/函數和模塊的使用.md)
函數的作用 - 代碼的壞味道 / 用函數封裝功能模塊
定義函數 - def語句 / 函數名 / 參數列表 / return語句 / 調用自定義函數
調用函數 - Python內置函數 / 導入模塊和函數
函數的參數 - 默認參數 / 可變參數 / 關鍵字參數(*) / 命名關鍵字參數(*)
函數的返回值 - 沒有返回值 / 返回單個值 / 返回多個值(*)
作用域問題 - 局部作用域 / 嵌套作用域 / 全局作用域 / 內置作用域 / 和作用域相關的關鍵字
用模塊管理函數 - 模塊的概念 / 用自定義模塊管理函數 / 命名沖突的時候會怎樣(同一個模塊和不同的模塊)
說明:用*標記的內容建議放到第8天再講,因為講完列表、元組、字典等內容后學生才更容易理解這些特殊的用法。
Day07 - [字符串和常用數據結構](./Day01~Day20 [語言基礎]/Day07/字符串和常用數據結構.md)
字符串的使用 - 計算長度 / 下標運算 / 切片 / 常用方法
列表基本用法 - 定義列表 / 用下表訪問元素 / 下標越界 / 添加元素 / 刪除元素 / 修改元素 / 切片 / 循環遍歷
列表常用操作 - 連接 / 復制(復制元素和復制數組) / 長度 / 排序 / 倒轉 / 查找
生成列表 - 使用range創建數字列表 / 生成表達式 / 生成器
元組的使用 - 定義元組 / 使用元組中的值 / 修改元組變量 / 元組和列表轉換
集合基本用法 - 集合和列表的區別 / 創建集合 / 添加元素 / 刪除元素 / 清空
集合常用操作 - 交集 / 并集 / 差集 / 對稱差 / 子集 / 超集
字典的基本用法 - 字典的特點 / 創建字典 / 添加元素 / 刪除元素 / 取值 / 清空
字典常用操作 - keys()方法 / values()方法 / items()方法 / setdefault()方法
基礎練習 - 跑馬燈效果 / 列表找最大元素 / 統計考試成績的平均分 / Fibonacci數列 / 楊輝三角
綜合案例 - 雙色球選號 / 井字棋
Day08 - [函數的高級用法](./Day01~Day20 [語言基礎]/Day08/函數的高級用法.md)
遺留問題 - 關鍵字參數 / 命名關鍵字參數 / 返回多個值?
函數的遞歸調用 - 遞歸定義 / 遞歸公式 / 收斂條件 / 用遞歸解決實際問題
實現常用工具函數 - 生成指定長度的驗證碼 / 獲取文件的后綴名 / 生成隨機文件名
高階函數 - 函數名也是變量 / 將函數傳入函數 / 利用高階函數實現代碼的解耦合 / 匿名函數(Lambda函數) / 包裝器(代理模式)
函數返回函數 - 用函數做返回值 / 閉包
偏函數和柯里化 - 偏函數的意義 / 使用partial函數創建偏函數 / 柯里化的概念
**說明:**函數式編程相關的內容屬于比較尷尬的知識點,需要做一個簡要的介紹,但是對學生來說暫時是用不上這些知識的,因此不要花太多的時間去糾結這些內容,事實上Python語言對函數式編程的支持也是非常有限的,讓學生知道函數可以接受函數作為參數也可以返回函數就已經很足夠了,如果講得太深大多數學生一定是懵的。
Day09 - [面向對象編程基礎](./Day01~Day20 [語言基礎]/Day09/面向對象編程基礎.md)
類和對象 - 什么是類 / 什么是對象 / 面向對象其他相關概念
定義類 - 基本結構 / 屬性和方法 / 構造器 / 析構器 / __str__方法
使用對象 - 創建對象 / 給對象發消息
面向對象的四大支柱 - 抽象 / 封裝 / 繼承 / 多態
基礎練習 - 定義學生類 / 定義時鐘類 / 定義圖形類 / 定義汽車類
**說明:**面向對象基礎部分一定要跟學生進行大量的互動,幫助學生理解類和對象的概念,面向對象編程的兩步走(創建對象+發消息)和三步走模式(定義類+創建對象+發消息),可以讓學生自己列舉出能想到的類和對象的例子,并且在講完本章內容將自己想到的例子變成代碼。
Day10 - [總結和練習](./Day01~Day20 [語言基礎]/Day10/練習.md)
綜合案例 - 奧特曼打小怪獸 / 撲克游戲
Day11 - 面向對象進階
屬性 - 類屬性 / 實例屬性 / 屬性訪問器 / 屬性修改器 / 屬性刪除器 / 使用__slots__
類中的方法 - 實例方法 / 類方法 / 靜態方法
運算符重載 - __add__ / __sub__ / __or__ /__getitem__ / __setitem__ / __len__ / __repr__ / __gt__ / __lt__ / __le__ / __ge__ / __eq__ / __ne__ / __contains__
類(的對象)之間的關系 - 關聯 / 繼承 / 依賴
繼承和多態 - 什么是繼承 / 繼承的語法 / 調用父類方法 / 方法重寫 / 類型判定 / 多重繼承 / 菱形繼承(鉆石繼承)和C3算法
綜合案例 - 工資結算系統 / 圖書自動折扣系統 / 自定義分數類
**說明:**菱形繼承和C3算法方面的內容可以根據實際授課情況進行取舍,因為與其把時間花在一些學生暫時難以理解的知識點上,還不如用這些時間讓學生通過大量的練習理解面向對象的意義。
Day12 - 文件和異常
讀文件 - 讀取整個文件 / 逐行讀取 / 文件路徑
寫文件 - 覆蓋寫入 / 追加寫入 / 文本文件 / 二進制文件
異常處理 - 異常機制的重要性 / try-except代碼塊 / else代碼塊 / finally代碼塊 / 內置異常類型 / 異常棧 / raise語句
數據持久化 - CSV文件概述 / csv模塊的應用 / JSON數據格式 / json模塊的應用
綜合案例 - 歌詞解析
Day13 - GUI和繪圖
GUI編程簡介 - 窗口和控件 / 事件驅動處理 / 布局管理器
tkinter模塊 - 導入tkinter模塊 / 創建頂層窗口 / 使用Tk控件 / 主消息循環 / 處理事件
動畫和游戲 - 屏幕坐標系和顏色 / 在窗口上繪圖 / 加載圖像 / 動畫的原理 / 使用pygame
說明:可以根據班級情況安排其他簡單且有趣的小游戲(五子棋、貪吃蛇等),主要目的是通過該項目綜合運用三周所學的知識以及提升學員的興趣和積極性。如果之前的課程中尚有很多知識點學員沒有掌握或者非常生疏,也可以利用這兩天時間進行查漏補缺和鞏固加強。
字符串高級操作 - 轉義字符 \ 原始字符串 \ 多行字符串 \ in和 not in運算符 \ is開頭的方法 \ join和split方法 \ strip相關方法 \ pyperclip模塊 \ 不變字符串和可變字符串 \ StringIO的使用
正則表達式入門 - 正則表達式的作用 \ 元字符 \ 轉義 \ 量詞 \ 分組 \ 零寬斷言 \貪婪匹配與惰性匹配懶惰 \ 使用re模塊實現正則表達式操作(匹配、搜索、替換、捕獲)
使用正則表達式 - re模塊 \ compile函數 \ group和groups方法 \ match方法 \ search方法 \ findall和finditer方法 \ sub和subn方法 \ split方法
應用案例 - 使用正則表達式驗證輸入的字符串
Day17 - 進程和線程入門
進程和線程的概念 - 什么是進程 / 什么是線程 / 多線程的應用場景
使用進程 - fork函數 / multiprocessing模塊 / 進程池 / 進程間通信
使用線程 - thread模塊 / threading模塊 / Thread類 / Lock類
Day18 - 進程和線程高級
使用ThreadLocal - 資源競爭 / 死鎖 / 將資源綁定到線程
并發編程模式 - 多進程和多線程的選擇 / 生產者-消費者模式 / queue模塊
協程 - 進程/線程切換的開銷 / 單線程+異步I/O工作模式 / 使用協程(微線程)
其他相關內容 - concurrent.futures模塊 / 其他相關模塊
**說明:**本章節的內容對學生來講沒有實際應用的場景可能會比較難于理解,因此可以根據教學的實際情況調整內容或者對之前的知識點進行鞏固練習或進行作業評講。
Day19 - 網絡編程入門
計算機網絡基礎 - 計算機網絡發展史 / “TCP-IP”模型 / IP地址 / 端口 / 協議 / 其他相關概念
網絡應用架構 - “客戶端-服務器”架構 / “瀏覽器-服務器”架構
Python網絡編程 - 套接字的概念 / socket模塊 / socket函數 / 創建TCP服務器 / 創建TCP客戶端 / 創建UDP服務器 / 創建UDP客戶端 / SocketServer模塊
**說明:**一定要幫助學生尤其是沒有計算機網絡相關知識的學生對計算機網絡尤其是端系統的工作方式有一個基本的了解,能夠理解網絡地址、協議、端口、域名服務、防火墻、套接字等概念以及它們存在的意義,當然如果能夠對TCP協議和HTTP協議做更深入一些的講解最好,這些都會讓學生在面試的時候更具競爭力,掌握一門語言和框架其實很簡單,真正理解系統底層的原理并不容易但卻有很重要且長遠的意義。
Day20 - 網絡應用開發
訪問網絡API - 網絡API概述 / 訪問URL / requests模塊 / 解析JSON格式數據
文件傳輸 - FTP協議 / ftplib模塊 / 交互式FTP應用
電子郵件 - SMTP協議 / POP3協議 / IMAP協議 / smtplib模塊 / poplib模塊 / imaplib模塊
短信服務 - twilio模塊 / 國內的短信服務
**說明:**本章節的授課重點不是要面面俱到把每個知識點都講一遍,而是讓學生能夠用Python語言和內置模塊迅速開發出一些實用的網絡應用程序,讓學生感受到經過一個月的學習已經能夠使用這門語言做很多以前很難想象的事情。
Web前端
Linux基礎
數據庫入門
Web框架之Django
Day31 - Django實戰(01) - 快速上手
Day32 - Django實戰(02) - 深入模型
總結
以上是生活随笔為你收集整理的python 100days github_GitHub - songhp/Python-100-Days: Python - 100天从新手到大师的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快上车!通用自主开发无人驾驶汽车首次公开
- 下一篇: Kotlin知识归纳(一) —— 基础语