Python 101 基礎教學 (3) - 條件判斷 if else
條件判斷是所有程式語言最重要的觀念之一。程式的目的就是有邏輯地自動化幫我們處理資料,沒有判斷選擇就不算邏輯了吧!所以 if else 語法幫助我們在程式裡面可以做出選擇。
條件判斷語法就只有 if
、elif
、 else
,解釋就照著字面就行:如果、否則如果、否則。使用之前我們需要知道 條件運算式 conditional expressions。
條件運算式
條件運算式的結果一定為真偽值(或是布林值:Boolean, bool),也就是 True/False。一些可用的運算符號包含 >
、 >=
、 <
、 <=
、 ==
、 !=
、 not
、 and
、 or
。
==
代表做又兩個值是否相等,用兩個等號是因為 =
已經被用來表示了變數賦值了。 !=
表示為不等於。
not
代表"否"的意思,也就是原本是 True
的東西加上驚嘆號就會倒過來變成 False
。
and
的左右兩邊要都會 True
才會使整體為 True
, or
則是只要任一為 True,整體就會為 True
。
print(2 > 1) # output: True
print(2 > 3) # output: False
print(2 == 2) # output: True
print(2 >= 2) # output: True
a = 1 == 1 # 1==1返回True,True再assign給a (=的右邊會先執行,再assign給左邊)
print(a) # output: True
print(True == 2 == 2)
# output: False, (True==2)==2 => False==2 => False
print(True == (2 == 2))
# output: True, True==(2==2) => True==True => True
print(not 1 == 1)
# output: False, not (1==1) => not True => False
print(True and False) # False
print(True or False) # True
a = 3
print(a > 2 and a < 4) # True
print(2 < a and a < 4) # True
print(2 < a < 4) # True
print(a == 3 and a < 2) # False, a不小於2
print(a == 3 or a == 2) # True, or左右其一條件滿足即可
print(True or False and True) # True
# 註:and 的優先級別比 or 高,所以同一式子裡 and 的會先執行
# a and b or c and d 的時候會變成 (a and b) or (c and d)
不同型態也可以做比較,Python 會先試著幫你轉換去比,但要注意的是這種做法會使可讀性降低,而且容易出錯,比較好的方式是自己使用型態轉換 (bool, int, str...),轉不了會直接報錯,有助於減少非預期結果發生。
print(1 == 1.0) # output: True
print(2 == 2.01) # output: False
print(1 == True) # output: True
print(0 == False) # output: True
print(2 == True) # output: False
# 字串轉boolean時,空字串被轉成 False,其他被轉為 True
print(bool('')) # output: False
print(bool('123')) # output: True
print('123' == 123) # output: False, 比較時字串不會自動轉換成數字
print(int('123') == 123) # output: True
print(float('123') == 123) # output: True, 123.0 == 123
print('1' == True) # output: False
print(bool('1') == True) # output: True
if、elif、else 使用方式
暸解了條件運算式以後,把if else套進去就很直觀了。if 是必須,而 elif 與 else 可有可無,但必須要接在 if 後:
# 語法如下:
# if [條件運算式]:
# [陳述式...]
# elif [條件運算式]:
# [陳述式...]
# else:
# [陳述式...]
# 程式執行時,只會進入其中一條件,如果符合if條件,就執行if裡的陳述式,
# 否則如果符合elif條件,就執行elif裡的陳述式,否則就執行else裡的陳述式。
# 基本例子
# 因為b > a,所以此條件不符合if也不符合elif,因此進入else
# 會印出 b is greater
a = 1
b = 2
if a > b:
print('a is greater')
elif a == b:
print('a is equal to b')
else:
print('b is greater')
# 可以只if
# 以下印出 a is 3
a = 3
if a == 3:
print('a is 3')
# 以下因為a不等於3,不會印出任何東西
a = 4
if a == 3:
print('a is 3')
# 可以只有if與else,沒有elif
# 以下印出 a is not 3
a = 4
if a == 3:
print('a is 3')
else:
print('a is not 3')
# 可以有多個elif
# 以下會印出 it's a cat
animal = 'cat'
if animal == 'dog':
print('it\'s a dog')
elif animal == 'cat':
print('it\'s a cat')
elif animal == 'bird':
print('it\'s a bird')
else:
print('I don\'t know what it is')
特別要注意的是 縮排(Indentation) 在 Python 裡面很重要,Indentation 在 Python 裡面表示了 Scope,有時候一不注意沒縮排好就會報錯:
if True:
print(123)
print(123)
# 以上縮排會導致報錯:
# IndentationError: unindent does not match any outer indentation level
# 不同的Indentation表示不同的Scope
if False:
print(1) # 在if底下的scope,if條件不滿足,不會執行
print(2) # indentation與if在同一個level,不屬於if的scope,會執行
繼續閱讀: