---
# System prepended metadata

title: Python 程式基本功

---

## <span class="green"> 1-1 Spyder 中常用的快捷鍵 </span>
<style>
.green {color: green;}
.orange {color: orange;}
</style>

**1. 編輯程式時常用到**
:::success
- **`ctrl`** + **`s`** 存檔
- **`ctrl`** + **`n`** 新開檔案
- **`Ctrl`** + **`Z`**：還原
- **`Ctrl`** + **`Y`**：取消還原
- **`Ctrl`** + **`4`**：多行註解/取消
- **`Tab`**：縮排 4 個空格字元
- **`Shift`** +**`Tab`**：左移 4 個空格字元
:::

**2.執行程式時常用到**
:::success
- **`F5`** 全部執行
- **`F9`** 單行執行(只執行你選擇的那一行)
:::
**3.跑到當掉時常用到**
:::success
在 Console 框按下 **`ctrl`** + **`.`**：重新運作`kernel`
在 Console 框按下 **`ctrl`** + **`T`**：新開一個`kernel`
:::
## <span class="green">1-1-1 變數(Variable)</span>

### 🚀 **使用 print() 輸出變數的值**
在 Python 建立字串後，就可以呼叫 print()函數顯示字串。

```python=1
grade = 90 
height = 156 
weight = 45
```

- **方法一**：將 **數字型別的變數** 轉為 **字串** 後再進行串接，使用 `str()` 將整數轉成字串，然後用 + 號將其與文字連接。
```python=4
# 方法一
print("分數 = " + str(grade)) 
print("身高 = " + str(height))
print("體重 = " + str(weight))
```

- **方法二**：直接在 `print()` 中使用逗號（`,`）隔開文字與變數值，使 Python 自動將數值轉為字串。

```python=4
# 方法二
print("分數 =", grade) 
print("身高 =", height)
print("體重 =", weight)
```
### 🚀 **變數的基本概念**
- 變數是用來儲存數據的容器，可以透過變數名稱來存取這些數據。
- 每個變數都有名稱和儲存的值。
![image](https://hackmd.io/_uploads/HkM4papbye.png)

## <span class="green">1-1-2 指定敘述</span>

### 🚀 **指定敘述**
將數值賦予變數。
```python=1
x = 5          # x = 5
x = x + 5      # x = 10 
name = "Alice"
```
### 🚀 **多重指定敘述**
- 一次將相同的數值賦予多個變數。
```python=1
score1 = score2 = score3 = 25
print(score1, score2, score3)    # 25 25 25
```
### 🚀 **同時指定敘述**
- 使用 Python 的多重賦值語法來交換兩個變數的值，而不需要使用中間變數。
```python=1
x, y = 1, 2    # X = 1 Y = 2
```
```python=2
x, y = y, x    # X = 2 Y = 1
```
## <span class="green">1-1-3 Python 運算子（Operator）</span>


| 運算子                                                  | 說明                                                                                                       |
|:------------------------------------------------------- |:---------------------------------------------------------------------------------------------------------- |
| `+` `-` `*` `/`                                         | 加法、減法、乘法、除法（回傳浮點數）                                                                       |
| `//` `%` `**`                                           | 整數除法（只取整數部分）、餘數、次方                                                                       |
| `==` `!=` `>` `<` `>=` `<=` | 等於、不等於、大於、小於、大於等於、小於等於 |
| `and` `or` `not`                                        | 邏輯運算子（Logical operations): AND, OR, NOT                                                             |
| `&` `XOR` `~`                                           | 位元運算子（Bitwise operations): AND, XOR, NOT                                                            |
| `<<` `>>`                                               | 位元運算子（Bitwise shift operations): 左移、右移                                                         |


### 🚀 **基本的數學運算**

```python=1
x = 5
print(type(x)) # 顯示 "<class 'int'>"
```
```python=3
print(x)       # 顯示 "5"
print(x + 1)   # 加法: 顯示 "6"
print(x - 1)   # 減法: 顯示 "4" 
print(x * 2)   # 乘法: 顯示 "10" 
```
```python=8
print(x / 2)   # 除法: 顯示 "2.5"
print(x // 2)  # 整數除法: 顯示 "2"
print(x % 2)   # 餘數: 顯示 "2"
print(x ** 2)  # 指數: 顯示 "25"
```
### 🚀 **不同的表示方法**
```python=11
x += 1  # 相當於 x = x + 1，顯示 "6"
x *= 2  # 相當於 x = x * 2，顯示 "12"
```
## <span class="green">1-1-4 資料型態</span>
### 🚀 整數（Integer / int）

```python=1
x = 5
print(type(x)) # 顯示 "<class 'int'>"
```
### 🚀 浮點數( Floats )
```python=1
y = 2.5
print(type(y)) # 顯示 "<class 'float'>"
```
### 🚀 布林( Booleans / Bool )
```python=1
z = True
print(type(z)) # 顯示 "<<class 'bool'>>"
```

- **邏輯 AND**：當兩個運算元都為 `True` 時，`and` 運算才會回傳 `True`，否則回傳 `False`。
- **邏輯 OR**：至少一個運算元為 `True` 時，`or` 運算會回傳 `True`。
- **邏輯 NOT**：將 `True` 轉為 `False`，或將 `False` 轉為 `True`。

```python=1
a = True
b = False
print(a and b) # 邏輯AND: 顯示 "False"
print(a or b)  # 邏輯OR: 顯示"True"
print(not a)   # 邏輯NOT: 顯示 "False" 
```

== 是相等運算符，會比較左右兩邊的值是否相等，會返回一個布林值 True 或 False，表示判斷結果。
```python=1
a, b = 3, 4

print(a == b)  # 相等: 顯示 "False"
print(a != b)  # 不等: 顯示 "True"

print(a > b)   # 大於: 顯示 "False"
print(a >= b)  # 大於等於: 顯示 "False"

print(a < b)   # 小於: 顯示 "True"
print(a <= b)  # 小於等於: 顯示 "True"
```
### 🚀 字串( String / Str )
```python=1
str1 = 'hello' 
print(type(str1)) # 顯示 "<class 'str'>"
```
**在 Python 中，%s 和 %d 是格式化字串的佔位符，用來將不同類型的數據作為字串。**
- %s：用於插入字串（或自動轉換成字串的資料）。
- %d：用於插入整數（d 代表 decimal 十進位）。

```python=1
str1 = 'hello'     # 使用單引號建立字串
str2 = "python"    # 使用雙引號建立字串
```
```python=3
str3 = str1 + ' ' + str2  # 字串連接
print(str3)        # 顯示 "hello python"
```
```python=5
str4 = '%s %s %d' % (str1, str2, 12)  # 格式化字串
print(str4)        # 顯示 "hello python 12"
```
![image](https://hackmd.io/_uploads/B1JCo66Z1e.png)

## <span class="green">1-2-1 條件控制</span>

可以分為：**if (單選)、if / else (二選一) 、 if / elif / else (多選一)**

### 🚀 單選條件敘述
`input()` 函數輸入字串，呼叫 `int()` 函數轉換為整數。

if t < 20 語法結構是：
* 程式判斷 t 是否小於 20。
* 如果 t 的值小於 20，條件為 `True`，將執行下一行的 `print()`。
* 如果 t 大於等於 20，條件為 `False`，則會跳過這行的 `print()`。
```python=
t = int(input("請輸入氣溫： "))
if t < 20:
    print("出門帶外套!")
print("今天氣溫 = " + str(t))
```
:::success
Python 程式區塊是縮排相同數量的空白字元，一般是 4 個空白字元 **(一個 `Tab` 鍵)**
:::
在條件敘述加上邏輯運算式

```python=
if t >= 20 and t <=22 :
    print("出門帶外套!")
```

### 🚀 二選一條件敘述
```python=1
s = int(input("請輸入成績 => "))
if s >= 65:
    print("成績及格!")
else:
    print("成績不及格!")
```
### 🚀 多選一條件敘述
```python=1
a = int(input("請輸入年齡 => "))
if a < 13:
    print("兒童")
elif a < 20:
    print("青少年")
else:
    print("成年人")
```
### 🚀 補充：單行條件敘述
這種條件運算式的語法結構是：

* 條件式：如果 **條件式** 為 `True`，則會返回 值1；否則，返回 值2。
* 變數：將選擇的結果賦值給 變數。
```python
變數 = (值1 if 條件式 else 值2)
```
```python
h = h-12 if h >= 12 else h
```
```python=1
h = int(input("輸入24小時制的小時數 => "))
h = h-12 if h >= 12 else h
print("目前時間為 =", h)
```
## <span class="green">1-2-2迴圈控制</span>
可以分為：**for/in 計數迴圈** 和 **while 條件迴圈**。

### 🚀 for/in 計數迴圈
使用情境：已經知道需要重複執行幾次。

```python=
m = int(input("請輸入最大值 =>"))
s = 0
for i in range(1, m + 1):
    s = s + i
print("總和 = " + str(s))
```
可以在回圈內印出 i, s, m 的變化，協助理解。
![image](https://hackmd.io/_uploads/SkENhSdQyx.png)

### 🚀 range() 函數


| range() 函數 | 整數值範圍 |備註 |
| -------- | -------- |--------  |
| range(5)     | 0 ~ 4 | 此參數是終止值，預設值是0 |
| range(1, 5) | 1 ~ 4  | 第 1 個參數是起始值，第 2 個參數是終止值(不包含本身) |
| range(1, 11, 2)  | 1、3、5、7、9 |range(起始值, 終止值-1, 步距)  |



### 🚀 while 條件迴圈
使用情境：迴圈執行次數取決於某個條件，而非固定次數。

## <span class="green">1-3 函數</span>
### 關鍵字引數
add 指定了將兩個數值 a 和 b 相加並回傳結果的操作。
```python=1
def add(a, b):
    return a + b
```
## <span class="green">1-4 類別(Class)與物件(Object)</span>