令人拍案叫絕的 Python 條件控制技巧
條件控制的重要性
條件控制是編程中最基本也是最重要的部分之一。它讓程序可以根據不同的情況做出不同的反應。想象一下,如果我們的程序不能根據用戶的輸入或環境的變化做出響應,那它就只是一個死板的工具,無法適應多變的需求。
理解條件語句的基礎
Python 中最基本的條件控制結構是 if 語句。通過這個簡單的語句,我們可以實現邏輯分支,讓程序走向不同的路徑。
代碼示例:
age = int(input("請輸入你的年齡: "))
if age >= 18:
print("你已成年!")
else:
print("你還未成年哦!")
這段代碼首先提示用戶輸入年齡,然后根據輸入的值判斷用戶是否成年。這里的關鍵點在于 if 后面的條件表達式 age >= 18,它是一個布爾表達式,返回 True 或 False。
使用 elif 增加更多選擇
當需要處理多個條件時,elif(即“else if”)就派上用場了。它可以讓你添加多個條件檢查,使程序更加靈活。
代碼示例:
score = int(input("請輸入你的分數: "))
if score >= 90:
print("優秀")
elif score >= 70:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
這里,根據分數的不同范圍,程序會輸出不同的評價。elif 允許我們在一個 if 語句中添加多個條件分支。
利用 in 和 not in 進行集合匹配
除了比較數值,我們還可以使用 in 和 not in 來檢查某個元素是否存在于一個集合(如列表、元組、字符串等)中。
代碼示例:
colors = ["red", "green", "blue"]
favorite_color = input("請輸入你喜歡的顏色: ")
if favorite_color in colors:
print(f"我喜歡{favorite_color}!")
else:
print("這不是我最喜歡的三種顏色之一。")
這段代碼詢問用戶喜歡的顏色,然后檢查該顏色是否在預定義的顏色列表中。如果是,則打印一條友好的消息;否則,告訴用戶這不在他們喜歡的顏色范圍內。
利用 and 與 or 連接條件
有時候我們需要同時滿足多個條件,或者只需要滿足其中一個條件即可。這時候就可以使用邏輯運算符 and 和 or。
代碼示例:
age = int(input("請輸入你的年齡: "))
has_ticket = input("你有票嗎?(yes/no): ") == "yes"
if age >= 18 and has_ticket:
print("歡迎進入電影院!")
elif age < 18 and has_ticket:
print("對不起,未成年人需由成人陪同。")
else:
print("請先購票。")
此示例展示了如何結合使用 and 和 or 來創建更復雜的邏輯判斷。只有當用戶既符合年齡要求又有票的情況下,才能進入電影院。
高級技巧:列表推導式中的條件表達式
列表推導式是一種簡潔的方式,可以用來創建新列表。當你想在生成列表的同時加入條件控制時,可以在列表推導式中使用條件表達式。
代碼示例:
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers) # 輸出: [2, 4, 6]
這段代碼創建了一個只包含原列表中偶數的新列表。列表推導式的語法非常直觀,容易理解。
實戰案例:自動評分系統
假設我們要開發一個在線課程的自動評分系統。對于每個學生的答案,系統需要根據多個標準給出評分。
需求分析:
- 如果學生按時提交作業,加分。
- 如果答案完全正確,滿分;部分正確,按比例給分;完全錯誤,零分。
- 根據參與討論的積極性給予額外加分。
代碼實現:
def calculate_score(submission_time, correctness, discussion_participation):
base_score = 0
if submission_time <= 24 * 60 * 60: # 按時提交
base_score += 10
if correctness == "perfect":
base_score += 80
elif correctness == "partial":
base_score += 40
else:
base_score += 0
if discussion_participation >= 3:
base_score += 10
return base_score
# 測試數據
print(calculate_score(23 * 60 * 60, "perfect", 5)) # 應輸出 100
print(calculate_score(25 * 60 * 60, "partial", 2)) # 應輸出 40
在這個例子中,我們定義了一個函數 calculate_score() 來計算學生的總分。通過組合使用多個條件判斷,實現了對不同情況下的評分規則。
總結
通過本文的學習,你應該已經掌握了 Python 中條件控制的基本用法以及一些高級技巧。從簡單的 if 語句到復雜的多條件組合,再到列表推導式中的條件表達式,每一步都為我們提供了更強大的編程能力。記住,條件控制是編寫邏輯清晰、功能豐富的程序的基礎。不斷練習,你會越來越熟練地運用這些技巧解決實際問題!