## <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)
```
### 🚀 **變數的基本概念**
- 變數是用來儲存數據的容器,可以透過變數名稱來存取這些數據。
- 每個變數都有名稱和儲存的值。

## <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"
```

## <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 的變化,協助理解。

### 🚀 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>