Semorphe

選擇

讓程式走兩條不同的路。 · ⏱ 約 30 分鐘

你會學到三件事

  1. if / elif / else
  2. 🔴 縮排就是語法——不是排版
  3. and / or / not 和六個比較符號

開始之前

到目前為止,程式每一行都會跑

這一課開始有些行會被跳過——而哪些被跳過取決於資料。 這是程式第一次自己做決定。

一、if

score = 75
if score >= 60:
    print("及格")

兩個部位:

if score >= 60 :
   └─ 條件 ─┘  └ 冒號不能少
    print("及格")
    └── 縮排四格 = 「這是 if 裡面的」

⚠️ 冒號縮排兩個都不能少,而它們是新手最常漏的兩樣東西。

二、🔴 縮排就是語法

if score >= 60:
    print("及格")
    print("恭喜")      # ← 也在 if 裡面
print("結束")          # ← 不在,永遠會印

縮排幾格決定一行屬於誰。 這不是排版習慣,是 Python 的語法。

慣例
縮排用 4 個空格
⚠️ 不要混用 tab 和空格 看起來一樣,而 Python 會給你 TabError
同一層要對齊 差一格就是 IndentationError

好處是「看起來的結構」和「實際的結構」永遠一致。 別的語言用大括號,於是縮排可以騙人——Python 裡不會。

三、elifelse

if score >= 90:
    print("優等")
elif score >= 60:
    print("及格")
else:
    print("不及格")

⚠️ 由上往下比,第一個成立的就進去,其餘全部跳過。

所以順序有意義——把 >= 60 寫在前面的話,90 分的人會被判成「及格」。

⚠️ 沒有 else if 這種寫法,只有 elif

四、六個比較

符號
> < 大於、小於
>= <= 大於等於、小於等於
== 等於(⚠️ 兩個等號)
!= 不等於

🔴 ===

score = 60      # 「把 60 放進 score」——它會【改變】score
score == 60     # 「score 是不是 60」——它【只是問】

⚠️ 在 if 裡寫成 = 的話 Python 會直接報語法錯誤—— 這一點比 C++ 好(那邊會安靜地跑出錯的結果)。

五、串起來

if 60 <= score < 90 and score != 75:
    print("普通")
符號 什麼時候成立
and 兩邊都成立
or 至少一邊成立
not 把成立與不成立對調

🟢 而 60 <= score < 90 在 Python 裡就是你想的那個意思 (很多語言不是這樣)。這叫鏈式比較。

完成的樣子

score = 75
if score >= 90:
    print("優等")
elif score >= 60:
    print("及格")
else:
    print("不及格")

換你了

讀進一個年份,判斷它是不是閏年。

規則:能被 4 整除、而且(不能被 100 整除,或者能被 400 整除)

⚠️ 括號的位置決定答案對不對——2000 年是閏年,1900 年不是。

這一課你做了什麼

如果卡住了

你看到 多半是因為
SyntaxError 指著 if 那行 冒號忘了
IndentationError 該縮沒縮,或縮排不一致
TabError tab 和空格混用了。全部改成 4 個空格
90 分被判成「及格」 elif 的順序反了——大的條件要在前面
else if 語法錯誤 Python 只有 elif
在編輯器打開這一課 →