文章目錄
- 一. 一個簡單示例
- 二. 條件測試
- 1. 檢查多個條件
- 1.1. 使用and關聯多個條件
- 1.2. 使用or檢查多個條件
- 1.3. in的判斷
- 2. 布爾表達式
- 三. if語句
- 1. 簡單的if語句
- 2. if-else語句
- 3. if-elif-else結構
- 4. 使用多個elif代碼塊
- 5. 省略else代碼塊
- 四. 使用if語句處理列表
- 1. 檢查特殊元素
- 2. 確定列表不是空的
- 如何編寫結果要么為True要么為False的條件測試;
- 如何編寫簡單的if語句、if-else語句和if-elif-else結構,并且在程序中使用這些結構來測試特定的條件,以確定這些條件是否滿足;
- 如何在利用高效的for循環的同時,以不同于其他元素的方式對特定的列表元素進行處理。
一. 一個簡單示例
if __name__ == '__main__':cars = ['audi', 'bmw', 'subaru', 'toyota']for car in cars:if car == 'bmw':print(car.upper())else:print(car.title())
?
二. 條件測試
每條if語句的核心都是一個值為True或False的表達式,這種表達式稱為條件測試。
如果條件測試的值為True,Python就執行緊跟在if語句后面的代碼;如果為False,Python就忽略這些代碼。
1. 檢查多個條件
1.1. 使用and關聯多個條件
要檢查是否兩個條件都為True,可使用關鍵字and將兩個條件測試合而為一。
例如,要檢查是否兩個人都不小于21歲
? >>> age_0 = 22>>> age_1 = 18
? >>> age_0 >= 21 and age_1 >= 21False
為改善可讀性,可將每個測試分別放在一對圓括號內,但并非必須這樣做。
(age_0 >= 21) and (age_1 >= 21)
?
1.2. 使用or檢查多個條件
關鍵字or也能夠讓你檢查多個條件,但只要至少一個條件滿足,就能通過整個測試。僅當兩個測試都沒有通過時,使用or的表達式才為False。
至少一個人的年齡不小于21歲:
? >>> age_0 = 22>>> age_1 = 18
? >>> age_0 >= 21 or age_1 >= 21True
?
1.3. in的判斷
要判斷特定的值是否已包含在列表中,可使用關鍵字in
創建一個列表,其中包含用戶點的比薩配料,然后檢查特定的配料是否包含在該列表中。
>>> requested_toppings = ['mushrooms', 'onions', 'pineapple']
>>> 'onions' in requested_toppings
True
使用關鍵字not in,來判斷值不包含在列表中。
?
2. 布爾表達式
與條件表達式一樣,布爾表達式的結果要么為True,要么為False,首字母不能小寫。
game_active = True
can_edit = False
?
三. if語句
1. 簡單的if語句
最簡單的if語句只有一個測試和一個操作:
if conditional_test:dosomething
age = 19
? if age >= 18:
? print("You are old enough to vote!")
在if語句中,縮進的作用與在for循環中相同。
?
2. if-else語句
age = 17
? if age >= 18:print("You are old enough to vote!")print("Have you registered to vote yet?")
? else:print("Sorry, you are too young to vote.")print("Please register to vote as soon as you turn 18!")
?
3. if-elif-else結構
Python只執行if-elif-else結構中的一個代碼塊。它依次檢查每個條件測試,直到遇到通過了的條件測試。測試通過后,Python將執行緊跟在它后面的代碼,并跳過余下的測試。
一個根據年齡段收費的游樂場:
▲ 4歲以下免費;▲ 4~18歲收費25美元;▲ 18歲(含)以上收費40美元。
age = 12? if age < 4:print("Your admission cost is $0.")
? elif age < 18:print("Your admission cost is $25.")
? else:print("Your admission cost is $40.")
?處的if測試檢查一個人是否不滿4歲。如果是,Python就打印一條合適的消息,并跳過余下測試。?處的elif代碼行其實是另一個if測試,僅在前面的測試未通過時才會運行。
?
優化
為了讓代碼更簡潔,可不在if-elif-else代碼塊中打印門票價格,而只在其中設置門票價格,并在它后面添加一個簡單的函數調用print():
age = 12if age < 4:
? price = 0elif age < 18:
? price = 25else:
? price = 40? print(f"Your admission cost is ${price}.")
?
4. 使用多個elif代碼塊
下面假設增加一個條件測試:對于65歲(含)以上的老人,可半價(即20美元)購買門票:
age = 12if age < 4:price = 0elif age < 18:price = 25
? elif age < 65:price = 40
? else:price = 20print(f"Your admission cost is ${price}.")
?
5. 省略else代碼塊
Python并不要求if-elif結構后面必須有else代碼塊。使用一條elif語句來處理特定的情形更清晰:
age = 12if age < 4:price = 0elif age < 18:price = 25elif age < 65:price = 40
? elif age >= 65:price = 20print(f"Your admission cost is ${price}.")
else是:只要不滿足任何if或elif中的條件測試,其中的代碼就會執行。這可能引入無效甚至惡意的數據。如果知道最終要測試的條件,應考慮使用一個elif代碼塊來代替else代碼塊。
?
四. 使用if語句處理列表
1. 檢查特殊元素
如果要添加青椒,則說明已經用完了
requested_toppings = ['mushrooms', 'green peppers', 'extra cheese']for requested_topping in requested_toppings:
? if requested_topping == 'green peppers':print("Sorry, we are out of green peppers right now.")
? else:print(f"Adding {requested_topping}.")print("\nFinished making your pizza!")
?
2. 確定列表不是空的
如果顧客要在比薩中添加炸薯條,該怎么辦呢?可使用列表和if語句來確定能否滿足顧客的要求。
? available_toppings = ['mushrooms', 'olives', 'green peppers','pepperoni', 'pineapple', 'extra cheese']? requested_toppings = ['mushrooms', 'french fries', 'extra cheese']? for requested_topping in requested_toppings:
? if requested_topping in available_toppings:print(f"Adding {requested_topping}.")
? else:print(f"Sorry, we don't have {requested_topping}.")print("\nFinished making your pizza!")
?
參考:《python編程:從入門到實踐(第二版)》