||
基礎常識學習
a. 環境準備以及基本認知:https://yungyuc.github.io/oldtech/python/python_intro.html#id2
(1) Python 程式語言為 直譯式並且物件導向的程式語言。
(2) 安裝 Python 執行環境:
Linux:一般使用 預裝的 Python 即可。
Windows: 下載 Windows 版的安裝程式 (目前為 3.9.5 版本)(https://www.python.org/)
b. 線上課程: https://training.pada-x.com/online.htm
學習重點:
(1) 基礎學習(以下可直接於 PC 端執行):
變數與資料型態、數字與字串運算、有序列表、集合、字典、流程控制、函式、模組、
可疊代資料型態(Iterable Data Types)(可以分開, 逐一取出內部資料):序列、集合、字典
# #為註解: 紀錄說明 # 第一支 PY 程式, 副檔名為 .py # 執行程式 python # 資料語法 # 數字 123 3.5 # 字串 "測試中文" "Hello Word" # 布林值 True False # 有順序 可動列表 List [3, 4, 5] ["Hello", "Word"] # 有順序 不可動列表 Tuple (3, 4, 5) ("Hello", "Word") # 集合 Set {3, 4, 5} {"Hello", "Word"} # 字典 Dictionary # 鍵 : 值 {"Apple":"蘋果", "Data" : "資料"} # 變數名稱 = 資料 a = 8 b = 5
# print(資料) print("變數與資料型態:") print("數字:", 3) print("文字:", "Hello Word") print("布林值:", True) print("列表:", [3, 4, 5]) print("type(a):", type(a)) print("變數 a:", a) print("變數 b:", b) print() # 空一行
# 數字與字串運算 print("數字與字串運算:") # + - * / a = 9 b = 4 print("a:", a, ", b:", b) print("a+b : ",a+b) print("a-b : ",a-b) print("a*b : ",a*b) print("a/b : ",a/b) print("a%b(取餘數) : ",a%b) print("a//b(整數除法) : ",a//b) print("a**b(a的b次方) : ",a**b) print("a**0.5(a的開根號): ",a**0.5) s1="Hello" s2="Word" s3="Hello" "Word" print("s1:", s1, ", s2:", s2) print("字串串接 s1+s2:", s1+s2, ", s1空格s2:", s3) print("字串換行 Hello+斜線n+Word:") print("Hello Word") print("字串換行 3個雙引號Hello+...+Word+3個雙引號, 直接換行:") s4="""Hello Word""" print(s4) s4="""Hello
Word""" print(s4) print("字串換行多次顯示 s1*3+s2*2:", s1*3+s2*2) print("索引 s1[1]:", s1[1]) print("索引 s1[1:4]:", s1[1:4]) print("索引 s1[1:]:", s1[1:], ", s1[:4]:", s1[:4]) print("索引 s1[1:4]+s2[1:3]:", s1[1:4]+s2[1:3]) print()
# 基本輸入為字串型態 print("Key In 方式一, 直接輸入:") c = input() print("輸入: ", c, ", 資料型態: ", type(c)) if c.isdigit() : print("資料型態是 數字") else : print("資料型態是 不是數字") print("Key In 方式二, 顯示提示輸入:") d = input("請輸入數字:") print("你的輸入是:", d) if d.isdigit() : print("type int") else : print("type str")
# 列出輸入數字結果 if d.isdigit() : # 轉為整數型態 e = int(d) print("轉置 int 型態: ", type(e)) if e == 30 : print(e, "= 30") elif e > 30 : print(e, "> 30") else : print(e, "< 30") print()
print("有序列表:") # 可動有序列表 List f = [1, 2, 3, 4, 5, 6, 7] print("建立可動列表: ", f) # 索引 第 2 筆 的資料 print("直接索引列表第 2 筆資料: ", f[2]) # 變更列表 f[0] = 55 print("變更第 0 筆資料後列表: ", f) # 取列表特定筆數 1:4 不包含 第 4 筆 g = f[1:4] print("取 1~4 筆資料後列表(不包含 第 4 筆): ", g) # 刪除 特定筆數(連續刪除) 1:4 不包含 第 4 筆 f[1:4] = [] print("刪除 1~4 筆資料後列表(不包含 第 4 筆): ", f) # 列表串接 f = f+[8, 9] print("串接 2 筆資料 [8, 9]: ", f) # 取列表長度 print("取列表長度: ", len(f)) # 巢状列表 f = [[1, 2, 3, 4, 5], [9, 8, 7]] print("巢狀列表:", f, ", 組數:", len(f), ", 第1組長度:", len(f[0]), ", 第2組長度:", len(f[1]), ", 第1組第2筆資料:", f[0][2], ", 第1組第1~4筆資料:", f[0][1:4] ) f[0][1:4] = [0, 0, 0, 0] print("變更[0][1~4]: ", f) print()
# 不可變動有序列表 Tuple g = (1, 2, 3, 4, 5, 6, 7) print("建立不可動列表: ", g) # 取列表特定筆數 1:4 不包含 第 4 筆 print("取 1~4 筆資料後列表(不包含 第 4 筆): ", g[1:4]) # 無法變更列表 # g[0] = 55 # 錯誤 Tuple 資料不可變更 print()
# 集合 Set print("集合:") s1 = {1, 2, 3, 4, 5} print("建立集合1:", s1) s2 = {2, 4, 6, 8} print("建立集合2:", s2) # 判斷集合元素 in, not in print("判斷 3 是否在集合1:", 3 in s1, "10 是否不在集合1:", 10 not in s1) # 集合運算 # 交集(取重疊部分) print("交集 s1 & s2:", s1&s2, ", s2 & s1:", s2&s1) # 聯集(取所有資料不重疊部分) print("聯集 s1 | s2:", s1|s2, ", s2 | s1:", s2|s1) # 差集(s1 中減去 s2 重疊部分) print("差集 s1 - s2:", s1-s2, ", s2 - s1:", s2-s1) # 反交集(取不重疊部分) print("反交集 s1 ^ s2:", s1^s2, ", s2 ^ s1:", s2^s1) # 建立字串集合(會過濾重複) s3 = set("Hello Word") print("建立字串集合(Hello Word):", s3, ", 長度:", len(s3), ", 查詢 W 是否在字串內:", "W" in s3) print()
# 字典 Dictionary print("字典:") dic = {"Apple":"蘋果", "Data" : "資料"} print("建立字典:", dic) # Key-Value 配對 print("Key-Value 配對 Apple:", dic["Apple"], ", Data: ", dic["Data"]) # 修改 dic["Apple"] = "小蘋果" print("修改字典:", dic) # 判斷 Key 是否存在 print("判斷 Data 的 Key 是否包含在字典:", "Data" in dic, ", Test 呢: ", "Test" in dic) # 移除 字典中的鍵值對(Key-Value pair) del(dic["Apple"]) print("刪除 Apple 鍵值:", dic) # 以列表資料當基礎產生字典 # dic = {x:x*2 for x in 列表} dic = {x:x*2 for x in [1, 2, 3, 4, 5]} print("以列表資料產生字典:", dic) print()
print("流程控制:") # 流程控制 # if 判斷式 # if 布林值一 : # (若布林值一為 True 執行命令) # elif 布林值二 : # (若布林值二為 True 執行命令) # else : # (其他) # 判斷是否為數字 # 不支援 swith # 迴圈 # while 布林值 : n = 1 while n <= 3 : print("while 驗證 -> 目前 n 值(<5):", n) n += 1; # for 變數 in 列表或字串 : for x in [1, 2 , 3] : print("for 驗證列表 -> 目前 x 值:", x) for c in "Hello Word" : print("for 驗證字串 -> 目前 c 值:", c) # 使用 range() # range(3) 相當於 [0, 1, 2] (不包含 3)(連續數字列表) for x in range(3) : print("for+rang 驗證 rang(3) -> 目前 x 值:", x) # range(3, 6) 相當於 [3, 4, 5] (包含 3, 不包含 6)(連續數字列表) for x in range(3, 6) : print("for+rang 驗證 rang(3, 6) -> 目前 x 值:", x) # 99 乘法表 print("99 乘法表:for+rang 應用") for i in range(1,10): for j in range(1,10): print(i*j, end=" ") print(end=" ") print()
# 函式: 程式碼包裝在一個區塊中, 方便隨時呼叫與用 # 基本語法 # def 函式名稱(參數名稱): # 函式內部的程式碼 # 定義函式 def sayMsg(msg="沒輸入資料喔!"): # 加入預設資料 print(msg) def addNum(n1, n2): print(n1, "+", n2) print(n1+n2) def addNumRet(n1, n2): print(n1, "+", n2) return (n1+n2) # 任何資料, 沒有是 None, 沒 return 也是回傳 None # 呼叫函式 print("呼叫函式 sayMsg() 使用預設資料:") # 預設資料 sayMsg() print("呼叫函式 sayMsg("Hello Word"):") sayMsg("Hello Word") print("呼叫函式 addNum(5, 4):") addNum(5, 4) print("呼叫函式 addNum(n2=5, n1=4) 使用名稱對應:") # 名稱對應 addNum(n2=5, n1=4) print("呼叫函式 addNumRet(6, 5):") print(addNumRet(6, 5)) # 程式包裝: 同樣邏輯重複利用 def muxAdd(pStart, pStop): sum=0 for n in range(pStart, pStop+1): sum += n return sum print("程式包裝 連加處理 muxAdd(1, 10):") print(muxAdd(1, 10)) # 預設資料 # 名稱對應 # 無限/不定 參數 # def 函式名稱(*無限參數) # 無限參數以 Tuple 資料形態處理 print("無限/不定 參數:") def AddData(*pData): for s in pData: print(s) AddData("資料1", "資料23", "資料456", "資料7890", "資料abcde") # 平均數計算 def avg(*pNum): print("平均計算:", pNum) total=0 for num in pNum: total += num; print("平均值: ", total/len(pNum)) avg(1) avg(1, 2) avg(1, 2, 3) print()
# 模組: 獨立程式檔案(載入 > 使用) # 載入: import 模組名稱(檔案名稱無附檔名 .py) # import 模組名稱 # import 模組名稱 as 模組別名 # 使用 # 模組名稱或別名.函式名稱(參數資料) # 模組名稱或別名.變數名稱 # 內建模組 # sys 模組: 取得系統相關資訊 import sys print("內建模組 作業系統:", sys.platform) print("內建模組 整數型態最大值:", sys.maxsize) print("-------------------------------") print("內建模組 模組路徑:", sys.path) # 列出模組搜尋順序 # 新增搜尋模組路徑 sys.path.append("modules") print("-------------------------------") print("內建模組 增加模組路徑 modules:", sys.path) print("-------------------------------") # 自定模組 import module_01 as tModule print(tModule.mName) tModule.MFunctionOne(1, 2, 3, 4, 5) # 幾何運算功能模組 import geometry print(geometry.sDistance) print(geometry.Distance(0, 0, 4, 3)) print(geometry.sSlope) print(geometry.Slope(0, 0, 4, 3)) print(geometry.Slope(0, 0, 4, 3))
#疊代資料 # 內建函式 # max print("疊代資料 取最大值 內建函式 max: ", max([20,40,60,90,30,10])) print("疊代資料 取最大值 內建函式 max: ", max("abczxy")) print("疊代資料 取最大值 內建函式 max: ", max({5, 10, 15, 100, 50, 1})) print("疊代資料 取最大值 內建函式 max: ", max({"x":5, "y":10})) #sorted print("疊代資料 排序 內建函式 sorted: ", sorted([2,4,6,9,3,1])) print("疊代資料 排序 內建函式 sorted: ", sorted("abczxy")) print("疊代資料 排序 內建函式 sorted: ", sorted({5, 10, 15, 100, 50, 1})) print("疊代資料 排序 內建函式 sorted: ", sorted({"x":5, "y":10})) #自定義 def Max(array): retVal = 0 for x in array: if retVal<x: retVal = x return retVal def Max2(*data): retVal = 0 for x in data: if retVal<x: retVal = x return retVal print("疊代資料 取最大值 自建函式 Max: ", Max([20,40,60,90,30,10])) print("疊代資料 取最大值 自建函式 Max2: ", Max2(20,40,60,90,30,10)) |