--- type:slide --- ## Week 5 - Python Chapter 2. Operators, Truthy and Falsy ### Python 運算子、真值與假值 #### 目標:學習 Python 中不同類型的運算子,理解真值 (Truthy) 與假值 (Falsy) 的概念 #### colab link --- ### **運算子介紹** * #### 定義:運算子 (Operator) 是對資料進行操作的符號或關鍵字。 * #### 範例:在 4 + 5 = 9 中,4 和 5 是操作元 (Operands),而 + 是運算子 (Operator)。 --- ## 練習題 假設你是小鎮的收銀員,每天要計算賣出商品的總額。給定兩個商品的價格: - `item1 = 23` - `item2 = 45` 請使用不同的運算子來計算以下內容: 1. 兩商品的總價 2. 兩商品的價差 3. 若每件商品多賣 10 件,計算新總額 --- ### 解答: ```python # 1. 兩商品的總價 item1 = 23 item2 = 45 total_price = item1 + item2 print("兩商品的總價:", total_price) # 68 # 2. 兩商品的價差 price_difference = abs(item1 - item2) print("兩商品的價差:", price_difference) # 22 # 3. 若每件商品多賣 10 件,計算新總額 item1_quantity = 10 item2_quantity = 10 new_total = (item1 * item1_quantity) + (item2 * item2_quantity) print("新總額:", new_total) # 680 ``` --- ## 算術運算子 (Arithmetic Operators) ### Python 支援的基本算術運算子: - `+`:加法 - `-`:減法 - `*`:乘法 - `/`:除法 - `%`:取餘 - `**`:次方 --- ### 範例: ```python a = 10 b = 2 print(a + b) # 12 print(a ** b) # 100 (10^2) ``` --- ### 練習題: 寫一個程式計算一個長方形的周長和面積。假設: - `length = 10` - `width = 5` 請使用加法、乘法和指數運算符來計算答案。 --- ### 解答: ```python # 定義長方形的長和寬 length = 10 width = 5 # 計算周長 perimeter = 2 * (length + width) print("長方形的周長:", perimeter) # 30 # 計算面積 area = length * width print("長方形的面積:", area) # 50 ``` --- ## 成員運算子 (Membership Operators) ### Python 支援的成員運算子: - `in`:檢查元素是否存在於集合中。 - `not in`:檢查元素是否不存在於集合中。 --- ### 範例: ```python fruits = ["apple", "banana"] print("apple" in fruits) # True print("grape" not in fruits) # True ``` --- ### 練習題: 一個魔術師給你一組單字清單 `["rabbit", "hat", "wand", "cape"]`,他說:「如果清單中有 `wand` 就能施展魔法!」。請檢查清單中是否有 `wand`,並告訴魔術師答案。 --- ### 解答: ```python # 定義單字清單 items = ["rabbit", "hat", "wand", "cape"] # 檢查清單中是否有 "wand" if "wand" in items: print("清單中有 'wand',可以施展魔法!") else: print("清單中沒有 'wand',無法施展魔法。") ``` --- ## 比較運算子(Comparison Operators) ### 比較兩個操作元,返回布林值 `True` 或 `False`: - `==`:等於 - `!=`:不等於 - `>`:大於 - `<`:小於 - `>=`:大於等於 - `<=`:小於等於 --- ### 範例: ```python a = 10 b = 5 print(a > b) # True ``` --- ## 比較運算子 (Comparison Operators) ### 練習題: 你需要幫助一位園丁檢查果園的蘋果是否比梨子多。給定: - `apples = 30` - `pears = 25` 使用比較運算符確認蘋果是否比梨子多,並輸出相應訊息。 --- ### 解答: ```python # 定義蘋果和梨子的數量 apples = 30 pears = 25 # 檢查蘋果是否比梨子多 if apples > pears: print("蘋果比梨子多。") else: print("蘋果不比梨子多。") ``` --- ## 賦值運算子 (Assignment Operators) ### 賦值運算子用於將值指派給變數: - `=`:賦值 - `+=`:加後賦值 - `-=`:減後賦值 - `*=`:乘後賦值 - `/=`:除後賦值 - `**=`:次方後賦值 --- ### 範例: ```python x = 5 x += 3 print(x) # 8 ``` --- ### 練習題: 你有 `coins = 10`,每次遊戲中獲勝會增加 5 枚硬幣。假設連贏了 3 場遊戲,請使用適當的賦值運算子來計算你最終的硬幣數量。 --- ### 解答: ```python # 初始硬幣數量 coins = 10 # 每場遊戲獲勝增加 5 枚硬幣,連贏 3 場 coins += 5 # 第一次獲勝 coins += 5 # 第二次獲勝 coins += 5 # 第三次獲勝 print("最終的硬幣數量:", coins) # 25 ``` --- ## 邏輯運算子 (Logical Operators) ### 處理布林值的運算子: - `and`:兩者皆為 `True` 時,返回 `True` - `or`:任一為 `True`,返回 `True` - `not`:將 `True` 變 `False`,或相反 --- ### 範例: ```python a = True b = False print(a and b) # False print(a or b) # True print(not a) # False ``` --- ### 練習題: 你是一個守衛,負責檢查進入城堡的訪客。若訪客年齡超過 18 且持有通行證才能放行。給定: - `age = 20` - `has_pass = True` 使用邏輯運算符檢查該訪客是否可以通過。 --- ### 解答: ```python # 訪客的年齡和通行證狀態 age = 20 has_pass = True # 檢查訪客是否符合放行條件 if age > 18 and has_pass: print("訪客可以通過。") else: print("訪客無法通過。") ``` --- ## 位元運算子 (Bitwise Operators) ### 逐位操作數值的二進位表示: - `&`:位元 AND - `|`:位元 OR - `^`:位元 XOR - `~`:位元取反 - `<<`:左移 - `>>`:右移 --- ### 範例: ```python a = 60 # 00111100 b = 13 # 00001101 print(a & b) # 12 (00001100) ``` --- ### 練習題: 有兩組燈光控制系統,`A` 控制的燈亮度為 `60` (二進位表示為 `00111100`),`B` 控制的燈亮度為 `13` (二進位表示為 `00001101`)。使用位元 `AND` 和 `OR` 運算來計算兩燈同時打開或其中一燈亮時的效果。 --- ### 解答: ```python # 定義燈光控制系統的亮度值 A = 60 # 00111100 B = 13 # 00001101 # 使用位元 AND 運算 and_result = A & B print("位元 AND 運算結果:", and_result) # 12 (00001100) # 使用位元 OR 運算 or_result = A | B print("位元 OR 運算結果:", or_result) # 61 (00111101) ``` --- ## 真值 (Truthy) 與假值 (Falsy) ### 概念 在 Python 中,任何物件皆可在布林上下文中視為 `True` 或 `False`。 - **Falsy 值**:空集合 (`[]`, `{}`)、數字 `0`、空字串 `""`、`None` - **Truthy 值**:非空集合、非零數字、`True` --- ### 範例: ```python print(bool("")) # False print(bool("text")) # True ``` --- ### 練習題: 你正在設計一個「密碼生成器」。如果用戶輸入了空字串 `""` 就表示密碼無效,否則有效。使用布林檢查輸入的字串是否為真值或假值,並打印「密碼有效」或「密碼無效」。 --- ### 解答: ```python # 用戶輸入的密碼 password = "" # 可以測試不同的值,例如 "mypassword" # 檢查密碼是否為真值或假值 if password: print("密碼有效") else: print("密碼無效") ``` --- ## 短路運算 (Short-Circuit Evaluation) ### 當 Python 已能確定邏輯運算結果時,會停止運算: - `A or B`:當 `A` 為 `True` 時停止。 - `A and B`:當 `A` 為 `False` 時停止。 ### 範例: ```python if 2 or (10 / 0): print("No error") # 因為 2 為 True,不會執行 10 / 0 ``` --- ### 練習題: 假設你有一段程式碼會引發除以零錯誤 (如 `10 / 0`),請使用短路運算避免出錯。設計一個條件,若數字大於 `0` 就不會執行這段錯誤代碼。 --- ### 解答: ```python # 定義數字 num = 0 # 可以嘗試不同的數值,例如 5 或 0 # 使用短路運算避免除以零錯誤 if num > 0 and (10 / num): print("成功執行除法") else: print("避免除以零錯誤") ``` ---
{"title":"Week 5 - Python Chapter 2. Ope","description":"+:加法","contributors":"[{\"id\":\"e3444383-f025-48fc-8209-cf895dce5811\",\"add\":4959,\"del\":45}]"}
    118 views