- 001_Python的歷史
- 002_Python的特點
- 003_搭建Python開發環境
- 004_動動手——編寫和運行一個HelloWorld程序
- 005_標識符
- 006_關鍵字
- 007_變量
- 008_語句
- 009_代碼注釋
- 010_模塊
- 011_動動手——實現兩個模塊間的代碼元素訪問
- 012_Python中的數據類型
- 013_整數類型
- 014_浮點類型
- 015_復數類型
- 016_布爾類型
- 017_數字類型的相互轉換
- 018_算術運算符
- 019_比較運算符
- 020_邏輯運算符
- 021_位運算符
- 022_賦值運算符
- 023_運算符的優先級
- 024_if結構
- 025_if-else結構
- 026_if-elif-else結構
- 027_while語句
- 028_for語句
- 029_跳轉語句
- 030_序列的索引操作
- 031_加和乘操作
- 032_切片操作
- 033_成員測試
- 034_創建列表
- 035_追加元素
- 036_插入元素
- 037_替換元素
- 038_刪除元素
- 039_創建元組
- 040_元組拆包
- 041_創建集合
- 042_修改集合
- 043_創建字典
- 044_修改字典
- 045_訪問字典視圖
- 046_普通字符串
- 047_原始字符串
- 048_長字符串
- 049_將字符串轉換為數字
- 050_將數字轉換為字符串
- 051_使用占位符
- 052_格式化控制符
- 053_字符串查找
- 054_字符串替換
- 055_字符串分割
- 056_定義函數
- 057_使用位置參數調用函數
- 058_使用關鍵字參數調用函數
- 059_參數的默認值
- 060_基于元組的可變參數
- 061_基于字典的可變參數
- 062_函數中變量的作用域
- 063_理解函數類型
- 064_過濾函數filter
- 065_映射函數map
- 066_lambda函數
- 067_面向對象
- 068_定義類
- 069_創建對象
- 070_類的成員
- 071_實例變量
- 072_構造方法
- 073_實例方法
- 074_類變量
- 075_類方法
- 076_私有變量
- 077_私有方法
- 078_使用屬性
- 079_Python中的繼承
- 080_多繼承
- 081_方法重寫
- 082_多態性
- 083_繼承與多態
- 084_鴨子類型測試與多態
- 085_第一個異!惝惓
- 086_try-except語句
- 087_多個except代碼塊
- 088_多重異常捕獲
- 089_try-except語句嵌套
- 090_使用finally代碼塊釋放資源
- 091_自定義異常類
- 092_動動手——手動引發異常
- 093_數學計算模塊——math
- 094_datetime類
- 095_datetime類常用方法
- 096_date類
- 097_time類
- 098_計算時間跨度類——timedelta
- 099_將日期時間與字符串相互轉換
- 100_正則表達式模塊
- 101_字符串匹配
- 102_字符串查找
- 103_字符串替換
- 104_字符串分割
- 105_打開文件
- 106_關閉文件
- 107_讀寫文本文件
- 108_動動手——復制文本文件
- 109_讀寫二進制文件
- 110_動動手——復制二進制文件
- 111_Python中的圖形用戶界面開發庫
- 112_安裝wxPython
- 113_第一個wxPython程序
- 114_自定義窗口類
- 115_在窗口中添加控件
- 116_事件處理
- 117_盒子布局管理器
- 118_動動手——重構事件處理示例
- 119_動動手——盒子布局管理器嵌套示例
- 120_文本輸入控件
- 121_復選框和單選按鈕
- 122_列表
- 123_靜態圖片控件
- 124_基本的網絡知識
- 125_搭建自己的Web服務器
- 126_發送GET請求
- 127_發送POST請求
- 128_JSON數據
- 129_SQLite數據庫
- 130_數據庫編程的基本操作過程
- 131_sqlite模塊API
- 132_示例中的數據表
- 133_無條件查詢
- 134_有條件查詢
- 135_插入數據
- 136_更新數據
- 137_刪除數據
- 138_線程相關的知識
- 139_線程模塊——threading
- 140_創建子線程
- 141_自定義函數實現線程體
- 142_自定義線程類實現線程體
- 143_等待線程結束
- 144_線程停止
在大數據和人工智能時代,Python是一門舉足輕重的編程語言。本書通過漫畫講解Python,學習起來生動有趣,非常值得我們閱讀和學習。
如果你要學習編程,Python 就是你最好的選擇了,因為它的語法相對于其他語言而言更加的簡單,很多時候,就算沒有學習過編程的人也能大致看明白程序想要做的事情。
我們學習一種編程語言,更多時候其實是學習一種語法,這種語法跟我們學英語時的語法沒有什么差別,都是要求你根據一定的規則去使用它,如果我們不按照英文的語法規則去講英語,大多數人都是聽不明白你在講什么的,編程也是相同的道理,如果你不按照規則去編寫程序,計算機也是不會明白你想要做什么的。
為什選它?
Python是一種非常接近自然語言的高級編程語言,因此易于學習和使用。Python被各行各業和包括Google在內的公司使用,它被應用于開發Web、桌面應用系統管理和機器學習。Python在數據科學領域和機械學習社區是很受歡迎的語言。希望這些理由可以說服你開始學習Python這門語言。
💡 補充:在測試行業里很多自動化、工具也都在使用Python,如果沒有任何開發語言基礎,簡單易學可以快速入門的它是非常不錯的選擇。
環境配置
安裝Python
運行python腳本需要安裝依賴環境,讓我們從官方 https://www.python.org/downloads/ 進行下載。
需要注意的是默認下載頁面的版本,一般是最新的Release版本,如圖中的紅圈出是3.10.6,如果是純學習3.6+都可以,這里筆者為了兼容更好選擇了3.8.10版本,后續的代碼演示也會基于此版本。
下載歷史版本需要在 looking for specific release?里查找,比如Ctrl+F搜索到了Python 3.8.10,點擊對應行的Download即會跳轉到下載頁面。
💡 Tips:圖中還可以看到3.8.11、12版本,這個兩個是后來的小版本升級,進入download只有源碼包,沒有直接安裝包,所以為了方便安裝我們最終選定10版本。
如果你使用的是windows用戶,可以點擊圖中紅色框內對應系統位數版本下載,如果是Mac用戶選擇綠色框內對應os系統版本下載,其他linux系統則需要通過source版本配置。
安裝包方法進行安裝比較簡單就省略了,如果有問題或者需要配置環境變量,網上安裝教程也很多,自行搜索解決下,這里當python安裝好后讓我們啟動一個終端,通過命令行檢查下安裝情況。
python --version
# 如mac或系統有共存的2.7版本,需要通過python3查看
python3 --version
當你看到版本信息的時候就證明python已經在電腦上安裝好,如果你是其他版本也無妨,不影響接下來的學習。
Python Shell
Python是解釋型腳本語言,因此它不需要編譯,這意味著它將逐行執行代碼。Python帶有一個Python Shell(交互式命令行)。它被用于執行單行python命令并得到相應結果。
python3 #python
此時python交互式shell已經打開,并且等待你寫入代碼(python 腳本),在符號 >>>寫下你的代碼然后按下Enter回車鍵,那么接下來讓我們在python shell 寫下第一個腳本。
很好,在交互Shell控制臺上你已經寫下了第一個腳本,簡單做了個加法計算2+3,并得到結果5輸出。那么如何關閉python shell呢?要退出只需要在符號>>>輸入 exit()命令并且按下回車鍵即可。
到現在為止,你已經知道如何打開Python shell 以及如何退出它了。如果你寫下的代碼能被python正確解讀,它將返回一個結果,否則將看到一個錯誤。讓我們故意制造一個錯誤來看看它是如何返回的。
正如你看到返回的錯誤,Python很聰明,它發現了一個 Syntax Error: invalid syntax 錯誤。使用了錯誤的乘法語法,因為在python中(x)不是一個有效關鍵詞,要實現乘法計算,我們需要使用(*)來替換(x)。返回的錯誤很明顯地展示了如何修復它。
從程序中找到錯誤并移除它的過程叫 **調試**,接下來讓我們用 * 替換掉 x 通過調試來修復錯誤。
我們的bug此時已經被正確修復,代碼正常運行并得到預期的結果(2乘3等于6)。作為一名程序員在每天的編程中你都會遇到這樣那樣的錯誤。知道如何調試問題是一件好事。為了更好調試你應該了解常見的錯誤的類型。你將來可能會遇到的一些Python錯誤類型包括但不限于 _SyntaxError、IndexError、NameError、ModuleNotFoundError、KeyError、ImportError、AttributeError、TypeError、ValueError、ZeroDivisionError _等。在后續的實戰中將會看到更多不同的 錯誤類型信息。
讓我們繼續在Python shell 做一些練習,回到終端并次進入交互模式,不要忘記進入命令是python或python3。
在Python shell模式下,我們先進行一些基礎的數學運算操作(加法、減法、乘法、除法、取模、指數)。
編寫正式pyton代碼之前先做一些數學計算:
3 + 7 = 10
7 - 2 = 5
2 * 6 = 12
3 / 2 = 1.5
3 ** 2 = 3 x 3 = 9
再在做一些而外的操作:
5 % 2 = 1 取模即求余數
5 // 2 = 2 地板除即求商
接下來讓我們把上邊的數學練習轉成python代碼。不過在這之前我們先在打開的python shell開頭寫下注釋。注釋 在python代碼中是不被執行的,所以我們可以在合適的地方增加一些文字說明來增加代碼可讀性。python 中單行注釋以 hash(#)符號開頭。以下演示和如何在python寫注釋
# 注釋以hash開頭
# 這是一個python的注解,因為它開頭用了符號(#)
在繼續下一節之前,讓我們在Python shell 做更多的練習。通過exit()命令退出shell模式,然后再重新打開并嘗試編寫一些字符交互。
完成上邊的學習和練習,讓我們進入下一部分:安裝編輯器來進行代碼編寫。
使用Visual Studio
Python shell 非常適合嘗試和測試小型腳本代碼,但不適合大型項目開發。在實際工作環境中,開發人員使用不同的代碼編輯器進行代碼編寫。在這30天的python編程學習挑戰中,我們將使用非常流行的開源的Visual Studio代碼編輯器,推薦使用官方https://code.visualstudio.com/最新版本。當然如果電腦上已經有其他的編輯器,根據你的個人情況進行選擇。
💡 Tips:VS Code是一個非常不錯的開源編輯器,雖然商國內商業版的Pycharm用的更多,但如果沒你沒有商業Key非常不建議花大量的時間取折騰一個IDE,編程學習重要的是學習語言語法和應用。
假設你已經下載并安裝好了VS Code IDE,讓我們來看下是如何使用它。
如何使用VS Code
通過桌面或者應用程序里點擊Visual Stuido圖標啟動,當你打開它時你將看到這樣的默認歡迎界面,你可以去掉勾選 show welcome page on startup 關閉,這樣在每次啟動后將不再出現。
💡 Tips:由于網絡原因可能網站打不開或或者下載失敗,可以搜下已下載安裝包或者找聯系我發送你對應的包。
此時你可以打開現有項目,從git倉庫中clone項目,也可以新建一個文件夾或文件。在電腦中合適的位置我們創建一個文名稱為 30DaysOfPython 文件夾,然后使用Visual Studio打開它。如果提示信任警告,請選擇Yes。
打開項目文件夾后,在展開項目并且鼠標放在上邊的時候會快捷按鈕,正如中所示,我已經通過創建文件按鈕,創建了一個helloworld.py嘗試完成你的創建。
事實上VS Code是支持多語言的,在對應區域下載默認會帶有本地語言包,如果沒有你可以通過切換到插件商店,搜索chinese安裝進行安裝。
如果沒安裝或沒完全中文化,可以通過快捷鍵Command + Shift + P(Window為Ctrl + Shift +P)打開命令配置,輸入"configure language" 選中語言顯示配置->zh-cn重新配置。
重啟后你就能看到全中文界面。
恭喜你,你已經完成開發環境的配置,讓我們開始進行編碼吧。
Python基礎
代碼可以在Python shell 或者IDE中編寫。它的文件擴展名為.py
縮進
在文本中一個縮進是空白,許多語言中縮進用于增加代碼的可讀性,不過Python中用來創建代碼塊。其他語言中(如Java)通常用括號創建代碼塊。編寫python代碼時常見的錯誤之一就是錯誤的縮進。
注釋
在我們編寫的代碼中注釋是非常重要,它使得代碼變得更易讀。Python中任何行以(#)開頭的是一行注釋,它在代碼運行時候是不會被執行的。
示例:單行注釋
# 這是第一行注釋
# 這是第二行注釋
# Python是很受歡迎的語言
示例:多行注釋使用三個引號將文本引用以來,它將是一個多行的注釋
"""這是多行注釋
它可以進行換行.
Python變得越來越流行
"""
數據類型
在Python中有幾種數據類型,讓我們從最常見一些開始學習。不同的數據類型在其他章節中得到詳細講解。目前來講,先讓我們來來了解下都有哪些數據類型,再次說明下,你現在無需立馬弄懂每個類型。
數字
整數int:整數(負、零和正)示例:... -3、-2、-1、0、1、2、3 ...
浮點數float:十進制數 示例 ... -3.5, -2.25, -1.0, 0.0, 1.1, 2.2, 3.5 ...
復雜complex 示例 1 + j, 2 + 4j
字符串str
單引號或雙引號里的一個或者多個字的集合。如果字符串多于一個句子或多行,則使用三個引號。
'Hi'
'MegaQi'
'Python'
'我喜歡教學與分享'
'I hope you are enjoying the first day of 30DaysOfPython Challenge'
布爾bool
布爾類型只有兩個值 True 或 Flase,注意 T 和 F 始終是大寫。
True # 邏輯舉例:燈亮著嗎? 如果它是開的,則值為 True
False # 燈亮著嗎?如果關閉,則值為 False
列表List
Python list 是一個有序集合,它允許存儲不同的數據類型項。類似于 JavaScript 中的數組。
# 所有類型均為數字
[0, 1, 2, 3, 4, 5]
# 所有項都是字符串類型(水果)
['香蕉', '橙子', 'Mango']
# 混合類型,包括了字符、整數、布爾和浮點
['芒果', 10, False, 9.81]
字典dict
Python 字典對象是鍵值對格式的無序數據集合。
{
'name':'大奇',
'country':'中國',
'age':35,
'is_married':True,
'skills':['Python', 'React', 'Node', 'Java', 'Vue']
}
元組tuple
元組也是一個有序集合,但它不同于List。元組一旦創建就不能修改,它們是不可變的。
# 七大行星
('地球', '木星', '海王星', '火星', '金星', '土星', '天王星', '水星')
集合set
集合是類似于列表和元組的數據類型的集合。與列表和元組不同,集合項不是有序的。與數學一樣,set在python 僅保存不重復的值。
{2, 4, 3, 5}
{3.14, 9.81, 2.7} # 在set中順序并不重要
查看數據類型
要檢查某些數據/變量的類型,我們使用type函數。在以下Python shell中,你將看到不同的 python 數據類型:
image.png
Python文件
假設已經創建好了python學習文件夾,如名為 30DayOfPython,但如果沒有請通過編輯器創建它。并且在此文件夾中,創建一個名為helloworld.py的文件,F在讓我們在Visual Studio上看下是如何進行代碼交互的。
Python Shell中打輸出結果時沒用使用print打印,但在VS Code中要看到結果需要使用*print()函數,print()括號內接受一個或多個參數,參考形式如 print('參數1','參數2')。具體可以看下邊的例子。
例子(文件為helloworld.py)
# Day 1 - 30天Python學習挑戰
# 數據計算
print(3 + 7) # 加 addition(+)
print(7 - 2) # 減 subtraction(-)
print(2 * 6) # 乘 multiplication(*)
print(3 / 2) # 除 division(/)
print(3 ** 2) # 次方 exponential(**)
print(5 % 2) # 求余 modulus(%)
print(5 // 2) # 求商 Floor division operator(//)
# 打印數據類型
print(type(10)) # 整數 Int
print(type(3.14)) # 浮點 Float
print(type(1 + 3j)) # 復數 Complex number
print(type('MegaQi')) # 字符串 String
print(type([1, 2, 3])) # 列表 List
print(type({'名稱':'大奇'})) # 字典 Dictionary
print(type({9.8, 3.14, 2.7})) # 集合 Set
print(type((9.8, 3.14, 2.7))) # 元組 Tuple
要運行python文件,請參考下圖。
方式1:通過點擊VS Code上的三角▶️按鈕運行
方式2:在編輯底部打開的終端上輸入 python3 helloworld.py 來運行
💡 提示:如果沒顯示終端,依次通過編輯器菜單->終端->新建終端 打開。
你太棒了,你已經完成了第1天的挑戰,并且正在成功的路上前進,F在趁熱做一些練習吧,來加強大腦和肌肉記憶。
1.2 Python的特點
1.3 搭建Python開發環境
1.4 動動手 —— 編寫和運行一個Hello World程序
2.1 標識符
2.2 關鍵字
【Python教程】看漫畫學python | 由入門到精通教程(2.3 變量)
【Python教程】看漫畫學python | 由入門到精通教程(2.4 語句)
2.5 代碼注釋
2.7 動動手 —— 實現兩個模塊間的代碼元素訪問
3.1 Python中的數據類型
3.2 整數類型
3.3 浮點類型
3.4 復數類型
3.5 布爾類型
3.6 數字類型的相互轉換
4.1 算術運算符
4.3 邏輯運算符
4.4 位運算符
4.5 賦值運算符
4.6 運算符的優先級
5.1.1 if 結構
5.1.3 if-else-if 結構
5.2.1 while 語句
5.2.2 for 語句
5.3 跳轉語句
6.1.1 序列的索引操作
6.1.2 加和乘操作
6.1.3 切片操作
6.1.4 成員測試
6.2.1 創建列表
6.2.2 追加元素
6.2.3 插入元素
6.2.5 刪除元素
6.3.1 創建元組
6.3.2 元組拆包
6.4.1 創建集合
6.4.2 修改集合
6.5.1 創建字典
6.5.2 修改字典
6.5.3 訪問字典視圖
7.1.1 普通字符串
7.1.2 原始字符串
7.1.3 長字符串
7.2.2 將數字轉換為字符串
7.2.3 變量
7.3.1 使用占位符
7.3.2 格式化控制符
7.4.1字符串查找
7.4.2 字符串替換
7.4.3 字符串分割
8.1 定義函數
8.2.1 使用位置參數調用函數
8.2.2 使用關鍵字參數調用函數
8.3 參數的默認值
8.4.1 基于元組的可變參數
8.4.2 基于字典的可變參數
8.5 函數中變量的作用域
8.6.1 理解函數類型
8.6.3 映射函數map
8.7 lambda函數
9.1 面向對象
9.2 定義類
9.3 創建對象
9.4 類的成員
9.4.1 實例變量
9.4.2 構造方法
9.4.3 實例方法
9.4.4 類變量
9.4.5 類方法
9.5.1 私有變量
9.5.2 私有方法
9.5.3 使用屬性
9.6.1 Python 中的繼承
9.6.2 多繼承
9.6.3 方法重寫
9.7 多態性
9.7.1 繼承與多態
9.7.2 鴨子類型測試與多態
10.1 第一個異常 —— 除零異常
10.2.1 try-except 語句
10.2.2 多個except代碼塊
10.2.3 多重異常捕獲
10.2.4 try-except語句嵌套
10.3 使用finally代碼塊釋放資源
10.4 自定義異常類
10.5 動動手 —— 手動引發異常
11.1 數學計算模塊 —— math
11.2.1 datetime 類
11.2.1 datetime類常用方法
11.2.2 date 類
11.2.3 time 類
11.2.4 計算時間跨度類 —— timedelta
11.2.5 將日期時間與字符串相互轉換
11.3 正則表達式模塊
11.3.1 字符串匹配
11.3.2 字符串查找
11.3.3 字符串替換
11.3.4 字符串分割
12.1 打開文件
12.2 關閉文件
12.3 讀寫文本文件
12.4 動動手 —— 復制文本文件
12.5 讀寫二進制文件
12.6 動動手 —— 復制二進制文件
13.1 Python中的圖形用戶界面開發庫
13.2 安裝wxPytho
13.3 第一個wxPython程序
13.4 自定義窗口類
13.5 在窗口中添加控件
13.6 事件處理
13.7.1 盒子布局管理器
13.7.2 動動手 —— 重構事件處理示例
13.7.3 動動手 —— 盒子布局管理器嵌套示例
13.8.1 文本輸入控件
13.8.2 復選框和單選按鈕
13.8.3 列表
13.8.4 靜態圖片控件
14.1 基本的網絡知識
14.2 搭建自己的Web服務器
14.3.1 發送GET請求
14.3.2 發送 POST 請求
14.4 JSON數據
15.1 SQLite數據庫
15.2 數據庫編程的基本操作過程
15.4.1 示例中的數據表
15.4.3 有條件查詢
15.4.4 插入數據
15.4.5 更新數據
15.4.6 刪除數據
16.1 線程相關的知識
16.2 線程模塊 —— threading
16.3 創建子線程
16.3.1 自定義函數實現線程體
16.3.2 自定義線程類實現線程體
16.4.2 線程停止