[筆記] Python 基礎
語言特性與熱門應用
- Python 是泛用的程式語言,強調易學好懂
- 最近常用在數據分析、人工智慧
安裝
下載地址 : Python

- 勾起來,之後操作方便許多
資料與運算
1. 變數與資料型態
- 數字 :
3.5 - 字串 :
"hello" - 布林值 :
True、False( python 的 T 跟 F 為大寫 ) - 可變列表 ( List ) :
[3,4,5]、["hello","world"] - 固定列表 ( Tuple ) :
(3,4,5)、("hello","world") - 集合 :
{3,4,5}、{"hello","world"} - 字典 :
{"apple":"蘋果","data":"資料"} - 變數 :
data=3data 為變數,不用宣告
2. 運算
數字
7//6: 整數除法2**3: 2 的 3 次方
字串
"hell\"o輸出為hell"o: 想在字串中加入雙引好可以用\跳脫"""hello"""or'''hello''': 在裡面的換行會直接呈現字串會對內部的字元編號 ( 索引 ),從 0 開始算起,假設
s = "hello"s[0]輸出為hs[1:4]輸出為ell: 輸出字串中編號 1 到 4 ( 不包含 )s[1:]輸出為ellos[:4]輸出為hell
有序列表 ( List、Tuple )
List,假設
grades = [12,60,15,70,90]grades[1:4] = []輸出為[12,90]: 連續刪除列表中編號 1 到 4 ( 不包含 )grades = grades + [12,33]輸出為[12,60,15,70,90,12,33]
Tuple : 除了更動會出錯,其他都跟 List 一樣
集合與字典
集合,假設
s1 = {3,4,5}s2 = {4,5,6,7}10 in s1輸出為False,10 not in s1輸出為True&: 交集,|: 聯集,-: 差集,^: 反交集s = set("hello")s 輸出為{'l','h','e','o'}: 把字串拆解為集合
字典,假設
dic = {"apple":"蘋果","bug":"蟲蟲"}test in dic輸出為False,test not in dic輸出為Truedel dic["apple"]: 刪除字典中的鍵值對dic = {x:x*2 for x in [3,4,5]}dic 輸出為{3:6,4:8,5:10}: 從列表資料產生字典
流程控制
- 在 python
{}用縮排 ( tab ) 取代
1. 判斷式
1 | if True: |
python 目前不支援 switch
2. 迴圈
- while
1 | n = 1 |
for
迴圈跑列表
1
2for x in [3, 5, 1]:
print(x)迴圈跑字串
1
2for x in "hello":
print(x)迴圈跑range
1
2for x in range(5):
print(x)range(5): 0,1,2,3,4range(3,7): 3,4,5,6
迴圈最後可加 else:,else 在迴圈結束前執行,被 break 強制結束就不會執行 else
函式、模組與封包
函式 : 用來做程式的包裝,同樣邏輯可以重複利用
1 | def add(n1 = 1,n2 = 2): |
1 | def avg(*ns): #無限不定參數資料 |
模組 : 將程式寫在一個檔案中,此檔案可重複載入使用
- 載入
1 | import sys as system #載入模組並取別名 system |
- 使用
1 | print(system.platform) |
- 內建模組與自訂模組
- 主程式
1 | import sys #內建的模組 |
- 模組 : 放在
modules資料夾內
1 | def distance(x1, y1, x2, y2): |
封包 : 用來整理、分類模組
- 檔案中的資料夾為封包,檔案為模組
建立封包
檔案配置 :
專案資料夾
主程式.py封包資料夾
__init__.py: 必要模組一.py模組二.py
使用封包
1 | import 封包名稱.模組名稱 as 模組別名 |
類別與實體物件
- 封裝的變數或函式,統稱類別的屬性
類別
定義類別
1
2
3class 類別名稱:
定義封裝的變數
定義封裝的函式使用類別
1 | 類別名稱.屬性名稱 |
實體物件
- 建立實體物件
1 | class 類別名稱: |
1 | class Point: |
- 使用實體物件
1 | #實體物件.實體屬性名稱 |
實體方法
- 建立實體方法
- 封裝在實體物件中的函式
1 | class 類別名稱: |
1 | class Point: |
- 使用實體方法
1 | #實體物件.實體方法名稱(參數資料) |
文字檔案的讀取與儲存
1. 開啟檔案
1 | 檔案物件 = open(檔案路徑, mode = 開啟模式, encoding = 編碼) |
開啟模式
"r": 讀取模式"w": 寫入模式"r+": 讀寫模式
編碼
"utf-8": 中文常用編碼
2. 讀取檔案
- 讀取全部文字
1 | 檔案物件.read() |
- 一次讀取一行
1 | for 變數 in 檔案物件: |
- 讀取 JSON 格式
1 | import json |
3. 儲存檔案
- 寫入文字
1 | 檔案物件.write("字串\n") #要換行就 \n |
- 寫入 JSON 格式
1 | import json |
4. 關閉檔案
1 | 檔案物件.close() |
最佳實務
1 | with open(檔案路徑, mode = 開啟模式) as 檔案物件: |
亂數與統計模組
random
- 載入模組
1 | import random |
- 使用 random
1 | random.choice([0, 1, 5, 8]) #從列表中隨機選取 1 個資料 |
常態分配範例 :

statistics
- 載入模組
1 | import statistics |
- 使用 statistics
1 | statistics.mean([1, 4, 6, 9]) #計算列表中數字的平均數 |
網路連線與公開資料串接
網路連線
- 載入模組
1 | import urllib.request as request |
- 下載特定網址資料
1 | with request.urlopen(網址) as response: |
公開資料串接
確認資料格式
- JSON、CSV、或其他格式
解讀格式
- 解讀 JSON 使用內建的 JSON 模組
