# 短網址: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"

* Mac 版本請選擇"macOS 64-bit installer"

***完成後請測試能否順利執行***
---
# 註冊帳號與課程資源
* 註冊
* [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變數與運算式
* 算術運算子
* 算術+賦值運算子
小提醒:與除法有關的運算式,留心**ZeroDivisionError**。
* 比較運算子
* 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檔案開啟與例外處理**
* 模式:
* 檔案和目錄管理:
* 例外處理:
* 單元測試(unittest):
* 範例
```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 兩個章節出题機率超高,一定要多加複習
* 考試配分是採選項配分,不會整题錯就完全沒分數