跳到內容

選擇敘述

到目前為止,程式都是從上到下一行一行執行。這一章要讓程式學會看情況做不同的事:條件成立就做這個,不然就做那個。

if 後面接一個條件,條件成立時才執行底下縮排的那幾行。這裡的縮排很重要:Python 靠縮排來分辨哪些程式碼是 if 底下的。

score = int(input("你的分數:"))
if score >= 60:
print("恭喜及格!")

輸入 85,條件 score >= 60 成立,就印出那行。把分數改成 40 再送出一次,條件不成立,if 底下那行就整個被跳過。

加上 else,就能在條件不成立時走另一條路。兩段一定只會執行其中一段:

score = int(input("你的分數:"))
if score >= 60:
print("及格")
else:
print("不及格")

要分三種以上的情況,就用 elif(else if 的縮寫)。Python 由上往下逐一檢查,遇到第一個成立的條件就執行那段,剩下的全部跳過:

score = int(input("你的分數:"))
if score >= 90:
print("優等")
elif score >= 60:
print("及格")
else:
print("不及格")

因為是由上往下檢查,條件的順序有影響。這裡先問 >= 90,再問 >= 60;如果把兩個對調,90 分的人也會先撞到 >= 60 而被判成「及格」。

if 的條件通常是一個比較。常用的比較運算子有六個:

運算子意思
==等於
!=不等於
>大於
<小於
>=大於等於
<=小於等於

要特別小心:判斷「相等」用的是兩個等號 ==,一個等號 = 是把值指定給變數,兩者意思完全不同。比較出來的結果是布林值 TrueFalse

要判斷一個數字落在某個範圍內,Python 可以像數學一樣把比較連起來寫。90 <= score <= 100 的意思就是「score 同時大於等於 90、又小於等於 100」:

score = int(input("你的分數:"))
if 90 <= score <= 100:
print("優等")
elif 60 <= score < 90:
print("及格")
else:
print("不及格")

這種寫法在分數分級這類題目很常見,比寫成 score >= 90 and score <= 100 更短也更好讀。

一個條件不夠用時,可以用 andornot 把幾個條件組起來。

and:兩邊都成立,整體才成立。

age = int(input("你的年齡:"))
if age >= 13 and age <= 19:
print("你是青少年")
else:
print("你不是青少年")

or:只要有一邊成立,整體就成立。

day = input("今天星期幾?(填一到日)")
if day == "" or day == "":
print("週末,放假!")
else:
print("要上班上課")

not:把成立與不成立顛倒過來。not TrueFalsenot FalseTrue

is_raining = False
if not is_raining:
print("天氣不錯,出門不用帶傘")