---
# System prepended metadata

title: 'pis 1002 期中考  ch6 '

---

## if-else 
---
![image](https://hackmd.io/_uploads/HJGwo0xfyx.png)
**如圖 if 表示python 檢視某個條件是否滿足**
若滿足 則繼續執行 若不滿足 則程式結束 
//媽媽叫小明出門買東西 如果天氣晴朗 買牛奶
```
if 天氣晴朗:
    買牛奶
```
    
![image](https://hackmd.io/_uploads/Byvkh0lfJx.png)

**而在 if- else 的判斷裡** 
則增加了若條件判斷為不滿足 程式碼要執行的其他內容
//媽媽叫小明出門買東西 如果天氣晴朗 買牛奶 如果不晴朗 買可樂 
```
if 天氣晴朗:
    買牛奶
else : 
    買可樂 
```


![image](https://hackmd.io/_uploads/rJ9ZCCgzJe.png)
**加入 elif  後 則可以進行更多條件的判斷**  
elif 的使用方式為「elif 條件:」，if 和 elif 都能針對各自對應的 True 結果執行對應的程式，而 else 仍然是對應結果為 False 的程式，當對應的程式都執行完成後，繼續執行下方程式。
//媽媽叫小明出門買東西 如果天氣晴朗 買牛奶 如果多雲 買可樂 如果不晴朗也不多雲 買果汁
```
if 天氣晴朗:
    買牛奶
elif 天氣多雲 : 
    買可樂 
else : 
    買果汁
```


---

---
## CH6 練習題


---

練習1 - 考試有沒有及格

設定分數 score = 61，撰寫程式判斷分數是否及格 (>=60)，若是，則印出「恭喜及格~」。


```python
score=61
if score>=60:
    print('恭喜及格~')
```

---

### 練習 2 - 錄取分數

```python
score = 85
threshold = 80

if score >= threshold:
    print("錄取")
else:
    print("未錄取")
```

---

### 練習 3 - 買水果

```python
mango_price = 34
watermelon_price = 29

if mango_price <= 30:
    print("買芒果")
else:
    print("芒果太貴了")

if watermelon_price <= 30:
    print("買西瓜")
else:
    print("西瓜太貴了")
```

---

### 練習 4 - 兩次考試都要及格

```python
score1 = 61
score2 = 59

if score1 >= 60 and score2 >= 60:
    print("皆及格")
else:
    print("被當了")
```

---

### 練習 5 - 氣候判斷

```python
temperature = 24
humidity = 45

if temperature < 25 and humidity <= 50:
    print("乾冷")
else:
    print("濕熱")
```

---

### 練習 6 - 電費計算

此題需要具體的費率和季節資訊。以下是示例代碼，假設費率變化。

```python
usage = 350  # 用電度數
season = "summer"  # 或 "winter"

if season == "summer":
    if usage <= 120:
        rate = 2.10
    elif usage <= 330:
        rate = 3.02
    else:
        rate = 4.39
else:  # winter
    if usage <= 120:
        rate = 1.63
    elif usage <= 330:
        rate = 2.38
    else:
        rate = 3.52

total_cost = usage * rate
print("電費:", total_cost)
```

---

### 練習 7 - 占卜

此題需要一個日期輸入，以下是假設占卜運勢的例子：

```python
import random

date = input("請輸入日期 (格式: YYYY-MM-DD): ")
fortune = random.choice(["普通", "吉", "大吉"])
print("您的運勢:", fortune)
```

---

### 練習 8 - 判斷平年或閏年

```python
year = int(input("請輸入年份: "))

if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print("閏年")
else:
    print("平年")
```

---

### 練習 9 - BMI

```python
height = float(input("請輸入身高 (公尺): "))
weight = float(input("請輸入體重 (公斤): "))

bmi = weight / (height ** 2)

if bmi < 18.5:
    status = "體重過輕"
elif 18.5 <= bmi < 24:
    status = "正常範圍"
elif 24 <= bmi < 27:
    status = "過重"
else:
    status = "肥胖"

print(f"BMI: {bmi:.2f}, 狀態: {status}")
```

---

### 練習 10 - BMR

```python
gender = input("請輸入性別 (男/女): ")
weight = float(input("請輸入體重 (公斤): "))
height = float(input("請輸入身高 (公分): "))
age = int(input("請輸入年齡: "))

if gender == "男":
    bmr = 88.362 + (13.397 * weight) + (4.799 * height) - (5.677 * age)
else:
    bmr = 447.593 + (9.247 * weight) + (3.098 * height) - (4.330 * age)

print(f"基礎代謝率 (BMR): {bmr:.2f} 大卡")
```

---

### 練習 11 - 擲骰子

```python
import random

dice_roll = random.randint(1, 6)
print("擲骰子結果:", dice_roll)
```

---


### 1. 輸入與輸出
`input()`：接收使用者的輸入，返回字串類型的值。
`print()`：輸出訊息到螢幕，用於顯示變數值或文字。
### 2. 資料型別與型態轉換
`int()`：將值轉換為整數類型。
`float()`：將值轉換為浮點數類型。
`str()`：將值轉換為字串類型，常用於拼接文字和其他類型數據。
`type()`：檢查變數的資料型別，回傳類型資訊。
### 3. 隨機數相關函式
```
import random
random.randint(a, b)
```
生成範圍 [a, b] 內的隨機整數，需先導入 random 模組。

### 4. 數學運算符
`+ `(加法)：計算兩數之和。
`-` (減法)：計算兩數之差。
`*` (乘法)：計算兩數之積。
`/ `(除法)：計算兩數之商，回傳浮點數。
`//` (整數除法)：計算兩數的整數商，去除小數部分。
`% `(取餘數)：計算兩數相除的餘數。
`**` (指數)：計算次方。
### 5. 邏輯與條件運算符
`and`：當左右兩個條件都為 True 時，結果為 True。
`or`：當左右兩個條件至少有一個為 True 時，結果為 True。
`not`：反轉布林值，True 變 False，False 變 True。
這些函式和運算符涵蓋了基本的輸入、輸出、型態轉換、隨機數生成、數學計算以及邏輯判斷功能，使得 Python 程式具備處理多樣化資料和進行邏輯運算的能力。

---
### 1. 邏輯判斷語法（CH6 邏輯判斷）
#### if-else 判斷
if 語句用於執行條件判斷，格式為：

```pyohon=
if 條件:
    # 當條件為真時執行的程式碼
else:
    # 當條件為假時執行的程式碼
```
`elif`：在多重條件下使用，用於 `if-elif-else` 判斷。


---

####  比較運算符
包含 `==, !=, <, >, <=, >=` 用於數值或字串比較。


---

#### 布林運算符
`and`: 兩個條件都為真時返回 True
`or`: 只要有一個條件為真就返回 True
`not`: 反轉布林值。


---

#### `input()` 函數
用於接收使用者輸入的數據，輸入默認為字串格式。



---


## 2.運算式、變數與資料型別（CH5 運算式、變數與資料型別）
####  1. 算術運算符

包含 + (加法), - (減法), * (乘法), / (除法, 回傳浮點數), // (整數除法), % (取餘    數), ** (指數)。



####  2. 資料型別

* 整數 (int)：沒有小數的數字。
* 浮點數 (float)：有小數的數字。
* 字串 (str)：由文字組成，使用單引號或雙引號包覆。

####  3. 變數
* 變數是用來儲存數據的名稱，可透過 = 指派運算符來賦值。
* 命名規則：變數名稱可以包含字母、數字和底線，不能以數字開頭，並避免使用 Python 的關鍵字。


####  4. 型別轉換
* 可使用 int() 將資料轉換為整數，float() 轉換為浮點數，str() 轉換為字串。
#### 5.  輸出
* 使用 print() 函數來顯示變數或運算結果。
