---
# System prepended metadata

title: 本周圖文編輯 11/22
tags: [校外服學]

---

# 主題
* 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')
```
![image](https://hackmd.io/_uploads/rJ9_ZxUm1e.png)
![image](https://hackmd.io/_uploads/rJNJfx8XJx.png)
![image](https://hackmd.io/_uploads/rkRnWeUXJg.png)


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者則執行此代碼

```
![image](https://hackmd.io/_uploads/SJg7Ng8Qkl.png)

* 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})")
```
![image](https://hackmd.io/_uploads/HyRHte87Jg.png)


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


* 與 if-elif-else 的對比
    * 優點：
        * 簡潔且更易讀，特別是在多分支邏輯或結構化資料處理時。
        * 適用場景：當匹配值是結構化資料、特定類型或多條件時，match 比傳統的 if-elif 更高效


# loop
- [ ] 學習目標

* 了解並掌握 Python 中的循環結構（loops），能夠靈活使用迴圈來自動執行重複任務，提升程式的效率與簡潔性。

- [ ] 知識點

1.為什麼要用迴圈
* 透過迴圈，程式可以自動重複執行指令，簡化程式碼、增加效率、方便處理大量資料
    
2.for迴圈
```python
    for i in range(5):
        print(i, end=" ")
```
![image](https://hackmd.io/_uploads/rynI_n4XJl.png)

3.while迴圈
```python
    i=0
    while(i<5):
        print(i,end=" ")
        i=i+1
```
![image](https://hackmd.io/_uploads/rynI_n4XJl.png)

4. 迴圈控制語法
 
* `break`
    * 提前結束迴圈。
* `continue`
    * 跳過當前迭代，直接進入下一次迭代。

``` python
for i in range(3):
    print(i,end=" ")
    if i == 5:
        break
else:
    print("未中斷，執行此區塊")
```
![image](https://hackmd.io/_uploads/r1ewQYh4XJe.png)


   

# 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
