加分練習
猜一猜 “if 語句” 是什麼,他有什麼作用。在做下一道題之前,試著用自己的話回答下面的問題:

你認為 if 對他下一行程式碼做了什麼?
為什麼 if 語句的下一行需要 4 個空格縮排?
如果不縮排,會發生什麼事情?
把練習 27 中的其它布林表示式放到 if 語句中會不會也可以執行呢?試一下。
如果把變數 people, cats 和 dogs 的初始值改掉,會發生什麼事情?

 people = 20
cats = 30
dogs = 15 if people < cats:
print("Too many cats! The world is doomed!") if people > cats:
print("Not many cats! The world is saved!") if people < dogs:
print("The world is drooled on!") if people > dogs:
print("The world is dry!") dogs += 5 if people >= dogs:
print("People are greater than or equal to dogs.") if people <= dogs:
print("People are less than or equal to dogs.") if people == dogs:
print("People are dogs.")

從打字上來說這一題挺簡單的,不過重點在於理解 if 語句的使用。跑一下結果如下。 

29.1 if 語句的作用
分析一下前四段 if 語句可以發現 if 語句的作用

if 語句會根據其中語句的布林值(True、False)影響其下一行程式碼是否執行。
如果是真 (if something Ture),就執行下面的程式碼。否則不執行。
29.2 為什麼 if 語句下面一行的程式碼需要 4 個空格? + 29.3 如果不縮排會怎樣?
這和我們在函式裡面遇到的情況一樣,4 個空格表示了哪些程式碼屬於此條 if 語句。

a = 1
b = 2
c = 3 if a < b:
print("這是第一行")
print("這是第二行")
if c < a:
print("這是第三行")
print("這是第四行")
print("這是第五行") print("-" * 10)
print("反過來條件試一下") if a > b:
print("這是第一行")
print("這是第二行")
if c > a:
print("這是第三行")
print("這是第四行")
print("這是第五行")

 
可以看到,沒有縮排的第五行是不受 if 語句影響的,而在縮排中的部分是否執行則在於 if 語句的真偽。

29.4 把 27 題改 if 語句

 print("Is 'not False' True?")
if not False:
print("Yes! is True!") print("\n------------------------")
print("Is 'not True' True?")
if not True:
print("Yes! is True!") print("\n------------------------")
print("Is 'True or True' True?")
if True or True:
print("Yes! is True!") print("\n------------------------")
print("Is 'True or False' True?")
if True or False:
print("Yes! is True!") print("\n------------------------")
print("Is 'False or True' True?")
if False or True:
print("Yes! is True!") print("\n------------------------")
print("Is 'False or False' True?")
if False or False:
print("Yes! is True!") print("\n------------------------")
print("Is 'True and True' True?")
if True and True:
print("Yes! is True!") print("\n------------------------")
print("Is 'True and False' True?")
if True and False:
print("Yes! is True!") print("\n------------------------")
print("Is 'False and True' True?")
if False and True:
print("Yes! is True!") print("\n------------------------")
print("Is 'False and False' True?")
if False and False:
print("Yes! is True!") print("\n------------------------")
print("Is 'not (True or True)' True?")
if not (True or True):
print("Yes! is True!") print("\n------------------------")
print("Is 'not (True or False)' True?")
if not (True or False):
print("Yes! is True!") print("\n------------------------")
print("Is 'not (False or True)' True?")
if not (False or True):
print("Yes! is True!") print("\n------------------------")
print("Is 'not (False or False)' True?")
if not (False or False):
print("Yes! is True!") print("\n------------------------")
print("Is 'not (True and True)' True?")
if not (True and True):
print("Yes! is True!") print("\n------------------------")
print("Is 'not (True and False)' True?")
if not (True and False):
print("Yes! is True!") print("\n------------------------")
print("Is 'not (False and True)' True?")
if not (False and True):
print("Yes! is True!") print("\n------------------------")
print("Is 'not (False and False)' True?")
if not (False and False):
print("Yes! is True!") print("\n------------------------")
print("Is '1 != 1' True?")
if 1 != 1:
print("Yes! is True!") print("\n------------------------")
print("Is '1 != 0' True?")
if 1 != 0:
print("Yes! is True!") print("\n------------------------")
print("Is '0 != 1' True?")
if 0 != 1:
print("Yes! is True!") print("\n------------------------")
print("Is '0 != 0' True?")
if 0 != 0:
print("Yes! is True!") print("\n------------------------")
print("Is '1 == 1' True?")
if 1 == 1:
print("Yes! is True!") print("\n------------------------")
print("Is '1 == 0' True?")
if 1 == 0:
print("Yes! is True!") print("\n------------------------")
print("Is '0 == 1' True?")
if 0 == 1:
print("Yes! is True!") print("\n------------------------")
print("Is '0 == 0' True?")
if 0 == 0:
print("Yes! is True!")