編程時經常需要檢查一系列條件,并據此決定采取什么措施。
python大大的圖
我的圖
1.一個簡單示例
假設你有一個汽車列表,并想將其中每輛汽車的名稱打印出來。對于大多數汽車,都應以首字母大寫的方式打印其名稱,但對于汽車名'bmw',應以全大寫的方式打印。對應大大的代碼4~9行。這個示例中的循環首先檢查當前的汽車名是否是'bmw'。如果是,就以全大寫的方式打印它;否則就以首字母大寫的方式打印。
2.條件測試
每條if語句的核心都是一個值為True或False的表達式,這種表達式被稱為條件測試。Python根據條件測試的值為True還是False來決定是否執行if語句中的代碼。如果條件測試值為True,Python就執行緊跟在if語句后面的代碼;如果為False,Python就忽略這些代碼。
(1)檢查是否相等
大多數條件測試都將一個變量的當前值同特定指進行比較。最簡單的條件測試檢查變量的值是否與特定值相等。
代碼第10行,car不等于'bmw',因此打印True。因為此時的變量car里存儲的值為循環結束的最后一個值toyota。
如果把判斷是否不相等改為判斷是否相等,那么打印False
一個等號是賦值,兩個等號或不等號是發問,相當于一個判斷語句。大大代碼第10行可解讀為:變量car的值不等于'bmw'對嗎?結果是對,打印True。
(2)檢查是否相等時不考慮大小寫
在Python中檢查是否相等時區分大小寫,兩個大小寫不同的值會被視為不相等。如果大小寫很重要,這種行為有其優點。但如果大小寫無關緊要,而只想檢查變量的值,可使用函數lower()將變量的值轉化為小寫,再進行比較。
函數lower()不會修改存儲在變量car中的值,因此進行這樣的比較時不會影響原來的變量。
可以這么論證函數lower()不改變原變量這個問題。在4~9行,我們打印出的Toyota已經經過了操作title(),但是在判斷相等時依然與原變量相等。lower()與title()是同一級別的函數,因此它也不會改變原變量。
網站采用類似的方式讓用戶輸入的數據符合特定的格式。例如,網站可能使用類似的測試來確保用戶名是獨一無二的,而并非只是與另一個用戶名的大小寫不同。用戶提交新的用戶名時,將把它轉換為小寫,并與所有既有用戶名的小寫版本進行比較。執行這種檢查時,如果已經有用戶名'john'(不管大小寫如何),則用戶提交用戶名'John'時將遭到拒絕。
(3)檢查是否不相等
要判斷兩個值是否不等,可結合使用驚嘆號和等號(!=),其中的驚嘆號表示不,在很多編程語言中都如此。這段代碼在(1)中說過了。
(4)比較數字
比較數字時條件語句中不止可以使用==和!=,還可以使用>,<,>=和<=。
(5)檢查多個條件
你可能想同時檢查多個條件,例如,有時候你需要在兩個條件都為True時才執行相應的操作,而有時候你只要求一個條件為True時就執行相應的操作。在這些情況下,關鍵字and和or可助你一臂之力。
使用and檢查多個條件:
條件全為真,返回True,否則返回False。對應13~16行代碼,if語句里的兩個條件:①'audi'在cars列表里,②列表cars的長度大于等于4。兩個條件均為真,則返回True,執行第一個print語句。
如果兩個條件有一個或者兩個不為真,那么執行else后面的print語句
使用or檢查多個條件:
至少有一個條件滿足,返回True,否則返回False。
上圖返回False的語句如果把and改為or,將返回True