# 主題
* type&I/O&operator
* conditional statements
* loop
* container(list,dic, set, tuple)
# 責編的話
* 內容先以補充為主,之後再濃縮
* 主要是介紹,可參考reference
[TOC]
# type&I/O&operator
- [ ] 學習目標
* 了解並掌握 Python 中的變數類別和輸入輸出,能夠區分並正確使用不同類型的變數,為程式設計中的**資料處理**和**邏輯運算**打下基礎。
- [ ] 知識點
1. 變數的基本概念
* **什麼是變數?**
* **變數如何儲存資料?**
2. 輸入輸出
* `input()`
* `print()`
3. Python 的資料類型
* 基本資料型別:
* 整數 (int)
* 浮點數 (float)
* 字串 (str)
* 布林值 (bool)
4. 資料型別轉換
* 隱式轉換與顯式轉換
* `int()`、`str()`、`float()` 等函數的使用
5. 變數的宣告與使用
* 命名規則
* 動態型別特性(不需明確宣告型別)
* 使用 `type()` 檢查變數的資料型別
6. common operator
* "\+\-*/" - 四則運算
* "== !=" - 等於/不等於
* "< >" 小於/大於
* "** //" - 指數/整數除法
# conditional statements
- [ ] 學習目標
* 了解並掌握 Python 中最簡單的流程控制「如果」的用法(if...elif...else...),能根據指定條件去做出該條件對應之操作
- [ ] 知識點
1. if條件判斷
* if-elif-else 結構:
```python
score = int(input("score: "))
if score >= 90:
print('Grade is: A')
elif score >= 80:
print('Grade is: B')
elif score >= 70:
print('Grade is: C')
elif score >= 60:
print('Grade is: D')
else:
print('Grade is: F')
```



2.縮排(應該標示前面在程式碼中即可)
* 縮排錯誤會導致 SyntaxError
* 標準(PEP8): `tab`or`4下space`
* 二選一,不可混合使用
3.match判斷
* match結構
```python
command = "start"
match command:
case "start":
print("Starting...")#值=start執行此代碼
case "stop":
print("Stopping...")#值=stop執行此代碼
case _:
print("Unknown command")#非以上2者則執行此代碼
```

* container(如list、tuple)
```python
point = (10,0)
match point:#判斷點是原點 or x 軸上的點 or 直接輸出點座標
case (0, 0):
print("原點")
case (x, 0):
print(f"x 軸上的點,x = {x}")
case (x, y):
print(f"點位於 ({x}, {y})")
```

* 變數的類型
```python
value = 1.1
match value:#判斷value是整數 or 字串 or 都不是
case int():
print("這是一個整數")
case str():
print("這是一個字串")
case _: #通配符"_"-用於忽略不重要的值或匹配任何情況
print("未知類型")
```

* 與 if-elif-else 的對比
* 優點:
* 簡潔且更易讀,特別是在多分支邏輯或結構化資料處理時。
* 適用場景:當匹配值是結構化資料、特定類型或多條件時,match 比傳統的 if-elif 更高效
# loop
- [ ] 學習目標
* 了解並掌握 Python 中的循環結構(loops),能夠靈活使用迴圈來自動執行重複任務,提升程式的效率與簡潔性。
- [ ] 知識點
1.為什麼要用迴圈
* 透過迴圈,程式可以自動重複執行指令,簡化程式碼、增加效率、方便處理大量資料
2.for迴圈
```python
for i in range(5):
print(i, end=" ")
```

3.while迴圈
```python
i=0
while(i<5):
print(i,end=" ")
i=i+1
```

4. 迴圈控制語法
* `break`
* 提前結束迴圈。
* `continue`
* 跳過當前迭代,直接進入下一次迭代。
``` python
for i in range(3):
print(i,end=" ")
if i == 5:
break
else:
print("未中斷,執行此區塊")
```

# container(list,dic, set, tuple)
- [ ] 學習目標
* 能夠根據需求選擇適合的資料結構,提升程式的效率與可讀性。
- [ ] 知識點
* 清單 (list)
```python=
mytuple = ["apple", "banana", "cherry"]
```
* 特性:有序可變(元素可新增、刪除、修改),可包含重複元素。
* 增加元素:`append()`、`insert()`、`extend()`
* 刪除元素:`remove()`、`pop()`
* 排序:`sort()`
* 長度:`len()`
* 存取元素:使用索引值存取元素。
* 切割操作:`list[start:end:step]`
* 使用場景:儲存有序資料且需頻繁修改。
* 元組 (tuple)
```python=
mytuple = ("apple", "banana", "cherry")
```
* 特性:有序不可變(元素不可修改),包含重複元素。
* 使用場景:儲存不需改動的固定資料。
* 集合 (set)
```python=
mytuple = {"apple", "banana", "cherry"}
```
* 無序,元素唯一,可變(元素可新增或刪除)。
* 高速存取 - 平均O(1)的查找時間
* 常見操作:
* 新增與刪除:`add()`、`remove()`
* 集合運算:`交集(&)`、`聯集(|)`、`差集(-)`
* 使用場景:過濾重複資料或集合操作。
* 字典 (dict)
```python=
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
```
* 無序(Python 3.7 中有插入順序),key唯一,以key-value對的形式存儲資料。
* 常見操作:
* 增加/修改:`dict[key] = value`
* 刪除:`del dict[key]、pop()`
* 遍歷:`for key, value in dict.items()`
* 使用場景:基於key快速查找資料,計算元素的出現次數。
* 資料結構的比較與選擇
* 何時使用 List vs Tuple ?
* 如果需要**有序、可修改且允許重複元素**的資料集合,選擇List。
* 如果需要**有序但不可修改**的資料集合,選擇Tuple
* 何時選擇 Dict 而非 Set?
* 如果需要根據**特定鍵快速查找和操作資料**,選擇Dictionary。
* 如果需要**唯一元素且不關心順序**,以及對集合運算有需求,選擇Set。
# reference
* 2022資訊之芽 py 語法班
[https://sprout.tw/py2022/slides](https://)
* 為你自己學 PYTHON
https://pythonbook.cc/chapters/basic/variable
* Python 3.13.0 Documentation
https://docs.python.org/3/
* PEP-8 Style Guide
https://peps.python.org/pep-0008/
* Python 基礎筆記:可變動的(mutable)與不可變動的(immutable)
https://medium.com/@oange6214/python-%E5%9F%BA%E7%A4%8E%E7%AD%86%E8%A8%98-%E5%8F%AF%E8%AE%8A%E5%8B%95%E7%9A%84-mutable-%E8%88%87%E4%B8%8D%E5%8F%AF%E8%AE%8A%E5%8B%95%E7%9A%84-immutble-54f1b7a6899