# 短網址:https://reurl.cc/adAVjZ # 安裝開發環境 **作業系統:** * 微軟:Windows 7 以上版本的作業系統。 * 蘋果:macOS High Sierra(10.13)以上版本的作業系統。 **處理器(CPU):** * Intel:Intel Core i3-3210 以上或同級效能的處理器。 * AMD:AMD A8-7600 APU 以上或同級效能的處理器。 **編程環境Python IDLE 3.10.11** [下載連結](https://www.python.org/downloads/release/python-31011/) * Windows 版本請選擇 "Windowsx 86-64 executable installer" ![](https://hackmd.io/_uploads/B1VdYcP5n.png) * Mac 版本請選擇"macOS 64-bit installer" ![](https://hackmd.io/_uploads/HyVnY5D5h.png) ***完成後請測試能否順利執行*** --- # 註冊帳號與課程資源 * 註冊 * [Koding school](https://koding.school/) * [測驗平台](https://exam.orangeapple.co/) * 課程資源 * ITS Python 基本練習題目解析影片邀請碼:142f29 * ITS Python 模擬考題目解析影片邀請碼:1a2815 * ITS Python 測驗卷邀請碼:rvq9z15r * ITS Python 補課用課程影片邀請碼:f8cda3 ***輸入完畢後,至平台內確認相關資源能否正常使用。*** --- # 作業與注意事項 * 課本作業 * 課本習題與課本實作題 * 課本習題至課本內完成 * 課本實作題完成後上傳檔案至指定[空間](https://drive.google.com/drive/folders/1hnQpil1VDfNvLR7sbhhXQFnkqOcNgXy9?usp=drive_link) * 作業檔名參照下列格式:單元_英文姓名_題號。例:第2單元的實作題1,完成後檔案儲存命名為CH2_英文名字_1,CH2_Light_1,並上傳。 * 平台練習題 * 至[考試平台](https://exam.orangeapple.co/)內完成測驗,需使用測驗模式,來紀錄測驗分數。 * 佈告欄 * [https://orangeapple.co/bulletins/AxJ3R5](https://orangeapple.co/bulletins/AxJ3R5) --- # 重點整理 * CH2變數與運算式 * 算術運算子![](https://hackmd.io/_uploads/BkFIwTNi3.png) * 算術+賦值運算子![](https://hackmd.io/_uploads/HycqOp4sh.png) 小提醒:與除法有關的運算式,留心**ZeroDivisionError**。 * 比較運算子![](https://hackmd.io/_uploads/rJSQta4jn.png) * CH3判斷式 * 雙向判斷(if**條件式:**...**else:**) ```javascript if 條件式: 程式區塊一 else: 程式區塊二 ``` * 多項判斷(if**條件式一:**...elif**條件式二:**...**else:**) ```javascript if 條件式: 程式區塊一 elif 條件式: 程式區塊二 else: 程式區塊三 ``` 小提醒:**留心:,以及雙向、多項判斷式結構**。 * CH4迴圈 * range 函式的能就是建立整數序數列,常用於迴圈內,宣告方式: 数列變數 = range(整數值) 数列變數 = range(起始值,終值) 数列變數 = range(起始值,終值,間隔值) * for廻圈,宣告方式: for數in數列: 程式區塊(若廻圈中又包含廻圈,形成巢狀廻圈。) ```javascript for i in XXX: for j in XXX: ``` * while廻圈:用於沒有固定次數的廻圈,宣告方式 ```javascript while 條件式: 程式區塊.... ``` * break指令通常用於迴圈內,在廻圈執行中途跳離迴圈, 圈後面的程式繼續執行。 * continue 指令 通常也是用於迴圈中,是在廻圈執行中途暂时停住不執行,而跳到廻圈的起始處執行。 * CH5串列與元組 * 串列宣告(一維):串列名稱=[1元素1,元素2,⋯⋯··] * 存取串列元素語法:串列名稱[索引] * 串列名稱[起始索引:終止索引:間隔值] * 索引值從0開始計數:第一個元素值索引值為0,第二個為1....類推。索引不可超出串列範圍,否則執行時將有「index out of range」錯誤。 * for圈讀取串列的方法有下列二種: * for 變數in串列: * for 變數in range(): * 串列常用語法: * 搜尋指定串列元素的索引值:串列名稱.index(元素) * 計算串列元素出現的次數:串列名稱.count(元素) * 新增元素在串列最後面:串列名稱.append(元素) * 插入元素在**指定索引值位置**:串列名稱.insert(**索引值,元素**) * **刪除**指定串列元素:串列名稱.remove(元素) * 自串列中取出元素,同時串列會將移除該元素:串列名稱.pop(**索引值**) * 刪除串列指定索引值元素,索引值可以是**負值**:del 串列名稱[**索引值**] * 刪除串列指定範圍索引值元素:del 串列名稱[起始值:終止值:間隔值] * 指定串列小到大排序:串列名稱.sort() * 順序反轉:串列名稱.reverse() * 小到大排序(註:新增串列、保留原串列結構):新串列名稱=sorted(串列名稱) * 元組宣告(Tuple):元組名稱(元素1,元素2,....) * 元組結構不能改變(無法使用append、insert等語法) * 執行速度較快 * 資料結構較安全 * 元組與串列可互相轉換:list1=list(tuple),tuple2=tuple(list)等用法。 * CH7函式與模組(**重要**) * 自建函式語法: ```javascript def 函式名稱(參數1, 參數2,.....): 程式區塊 return 回傳值1,回傳值2,.... ``` * import 模組用法 ```javascript 用法1:import 模組 模組.函式名稱(參數) 用法2:import 模組 as 別名 別名.函式名稱(參數) 用法3:from 模組 import* 函式名稱(參數) ``` * 指定參數與參數預設值 ```javascript def add(a, b): c = a+b return c r= add(a=3,6=5)# 直接指定參數 r= add(b=5,a=3)# 若有指定参數,則不管顺序 print(r) ``` ```javascript def add(a, b, c=1): d = a+b+c return d r = add(3, 5) #不放入c,使用add設值 r = add(3,5,4)#使用c=4,取代c=1的預設值 ``` * **CH9檔案開啟與例外處理** * 模式:![](https://hackmd.io/_uploads/r1fEQKah2.png) * 檔案和目錄管理:![](https://hackmd.io/_uploads/Bymu7FT2n.png) * 例外處理:![](https://hackmd.io/_uploads/rkDs7tan2.png) * 單元測試(unittest):![](https://hackmd.io/_uploads/SklamK632.png) * 範例 ```javascript import unittest class TestStringMethods(unittest.TestCase): def test_upper(self): self.assertEqual('foo'.upper(), 'FOO') def test_isupper(self): self.assertTrue('FOO'.isupper()) self.assertFalse('Foo'.isupper()) def test_split(self): s = 'hello world' self.assertEqual(s.split(), ['hello', 'world']) # check that s.split fails when the separator is not a string with self.assertRaises(TypeError): s.split(2) if __name__ == '__main__': unittest.main() ``` * **考試技巧及注意事項** * 碰到不會的题目記得使用刪去法將差太多的答案刪掉 * 50分鐘38題,平均一题只能做答1分多鐘 * 記得反覆練習「模擬測驗1」、「模擬測驗2」,二份測驗卷的题目。 * CH7,CH9 兩個章節出题機率超高,一定要多加複習 * 考試配分是採選項配分,不會整题錯就完全沒分數