?(請先看置頂博文)https://blog.csdn.net/GenuineMonster/article/details/104495419
目錄
一、if語句
1、檢查變量存儲的值是否相等?
2、判定字母或字符串時區別大小寫
3、檢查多個條件?
4、檢查特定值是否在列表中?
二、if-else語句和if-elif-else語句
1、if-else語句
2、if-elif-else語句
三、使用if語句處理列表
?
? ? 眾所周知,if的英文意思是“如果”,有if的一般是條件語句,在Python中也是如此。程序世界中,我們經常會用到if語句,對當前的狀態、某一變量的數值進行判斷,從而進行不同的操作。接下來我將會介紹if語句的語法以及if語句在列表中的應用。
一、if語句
我看的書中直接給出if與列表配合使用的用法,那么我們這里也以代碼舉例說明,為了碼字方便,我直接在代碼里增加備注說明。?
#made by Jeffery
#Happy day
#10.21
cars=['audi','bmd','subaru','toyota']
#創建一個轎車列表,其中bmw在輸出時需要全部大寫,所以,我們接下來用if語句對bmw和其它轎車品牌進行區別
for car in cars: #循環語句,提取列表中的元素與bmw進行比對if car=='bmw':#如果比如成功,那么就全部大寫輸出print(car.upper())else: #比對失敗,那么就以首字母大寫的方式輸出轎車品牌print(car.title())
?在這個if語句的示例中需要說明的地方有以下幾點:
A、C語言中,if語句要把判斷條件的等式放入括號內。而在Python中,一般不用放入括號內。除非需要判斷的條件眾多,增加括號以提高代碼閱讀性。
B:if關鍵字后跟著的等式和C語言一樣是兩個等號(“==”)或者沒有等號,后者所描述的情況我將會在下面的內容舉例說明。
C:每次if語句寫完條件后,要在后面寫“:”(冒號),意思是如果滿足這個條件,代碼將會執行什么操作。
每條if語句的核心都是一個值為True或False的表達式,這種表達式在Python中被稱為條件測試。如果條件測試的值為True,Python就執行緊跟在if語句后面的代碼;如果為False,Python就忽略這些代碼。?
1、檢查變量存儲的值是否相等?
? ? ? ? Python中的if語句可以很方便的檢查兩個變量的值是否相等,變量的值包括數值(數字)、字符串、字母等,一般用“==”(兩個等號)來對兩者(特定值和變量值)進行判定,如果二者“相等”,則返回True,否則返回False。
對于1個等號、2個等號的理解:1個等號是“賦值”:將等號右側的特定的值賦給等號左側的變量;2個等號是“判定”:判定2個等號左右兩側的值(數字、字符串、字母)是否相等。同樣,可以判斷相等,也就可以判斷不相等(將“==”替換為“!=”)用感嘆號表示不相等的意思。實列代碼圖下所示:
word="interesting"
a='Interesting'
if(a!=word):print("兩個單詞的大小寫不一致!")
2、判定字母或字符串時區別大小寫
字母或字符串通常涉及到大小寫問題,有的情況區別大小寫,如賬號密碼;有的情況則相反,如單詞的簡單拼寫,大小寫無關緊要。所以在檢查字母大小寫時,可以根據實際情況使用upper、lower等函數對字母或字符串進行大小寫轉換(轉換為臨時轉換)。下面用代碼舉例子。
word="interesting"
a='Interesting'
if(a.lower()==word):print("兩個單詞意思一樣!")
else:print("兩個單詞意思是不一樣的")
print('a中存儲的單詞是否被改變了呢?讓我們看一下!')
print(a) #輸出a中的單詞,確定其沒有改變
3、檢查多個條件?
?多個條件就與中學數學中的“與”、“或”一樣了。
A、判斷多個條件同時滿足,就用“and”將這些條件連接起來:如果每個條件都滿足,則整個表達式就為True;如果有一個條件不滿足,那么整個表達式就為False。下面用代碼舉例:
a=10 #將三個數字存儲在a、b、c三個變量中。
b=15
c=12
if(c<b and c>a): #對a的數字進行兩個條件的判斷print("c中存儲的數字在a和b之間!")
else:print("c中存儲的數字不在a和b之間!")
上述代碼if后的語句可以用(c<b) and (c>a)代替,提高可讀性。?
B、如果多個條件只需要一個滿足就ok的,那么就用“or”連接這些條件:只要有一個條件滿足,那么整個表達式就為True。都不滿足,整個表達式才為Fasle。請看例代碼:
a=10 #將三個數字存儲在a、b、c三個變量中。
b=15
c=20
if(c<b or c>a): #對a的數字進行兩個條件的判斷,顯然c>aprint("c中存儲的數字在a和b之間!")
else:print("c中存儲的數字不在a和b之間!")
4、檢查特定值是否在列表中?
有時候,執行操作前必須檢查列表是否包含特定的值。比如你在注冊某度云盤時,使用的用戶名是唯一的,所以需要檢測即將注冊的的新的用戶名是否和已存在的用戶名沖突。此時,即可使用“in”來實現本操作。有時檢查不在列表里的效率更高一點,那么可以使用關鍵字“not in”實現對應操作。
請看里代碼:
a=[1,2,3,4,5] #創建一個數字列表
print("數字列表為:",a)
if(1 in a): #使用in關鍵字,對1是否在本數字列表進行判斷print("1在數字列表中!")
else:print("1不在數字列表中!")
if(10 in a): #使用in關鍵字,對10是否在本數字列表進行判斷print("10在數字列表中")
else:print("10不在數字列表中!")
?簡單在這里提一下:布爾表達式是條件測試的別名,其結果也是True或者False。
二、if-else語句和if-elif-else語句
1、if-else語句
在之前演示的例代碼中,我也有做過if-else語句的舉例:其基本使用語境是滿足a,執行a1;否則,執行b1。這里再給出一個參考書中的例代碼,供大家理解:
age=17#定義年齡
if age >=18:#大于18歲進行下面兩個輸出print("You are old enough to vote")print("Have you registered to vote yet?")
else: #小于18歲進行下面兩個輸出print("Sorry, you are too young to vote")print("Please register to vote as soon as you turn 18")
if-else語句非常適合讓Python執行兩種操作之一的情況。另外,在寫if-else條件語句時?,有2個需要注意的地方:a、不要丟掉if語句后的“:”(冒號)以及else語句后的“:”(冒號)。b、注意縮進,如果縮進不一致,輸出結果和你想象的就不一樣了。
2、if-elif-else語句
?如果需要進行多個檢查,如“景區根據游客年齡的不同進行分段收費”的操作,就得使用if-elif-else語句了。例代碼:
age = 12
if age < 4:print("Your admission cost is $0")
elif age < 18: #注意縮進print("Your admission cost is $5")
else:print("Your admission cost is $10")
如果這個景區根據游客年齡段進行收費的制度極為詳細(每10歲就是一個收費區間)那么,我們在編寫代碼的時候就可以使用多個“elif”,并且需要注意的是“縮進問題”和“冒號的問題”。雖然我們說的是與if-elif-else的問題,但是在Python中并不要求if-elif結構后面必須有else代碼塊。在有些情況下,else代碼塊很有用;而在有些情況下,用一條elif語句來處理特定的情形更清晰。(else可謂是“包羅萬象”:只要是不滿足if、elif中的條件測試,else中的代碼就會執行,這可能就會引入無效甚至是惡意的數據)
通過上述的例代碼就可以看出,if-elif-else語句僅適合于只有一個條件滿足的情況,一旦條件滿足,Python就會跳過余下的條件檢查。然而有些情況就需要對所有的條件進行一一檢查,此時就是用簡單的if語句就好了。例代碼如下:
問題大意——檢查顧客點的小料是否還有,有的話就顯示“添加什么什么小料”,沒有的話就跳過,最后打印“披薩做好了”
requested_toppings=['mushrooms','extra cheese']
if 'mushrooms' in requested_toppings:print("Adding mushrooms.")
if 'pepperoni' in requested_toppings:print("Adding pepperoni.")
if 'extra cheese' in requested_toppings:print("Adding extra cheese.")
print("\nFinished making your pizza!")
?
這個程序運行時就進行了三個獨立的條件檢驗,進而根據每個條件檢驗的結果,輸出。
三、使用if語句處理列表
? ? ? ?此小節的學習目標是:學會如何檢查列表中的特殊值,并對其做出合適的處理。我們繼續使用前面的披薩店的例子:披薩店在制作披薩的過程中,每添加一種配料就打印一條消息。要求創建一個列表,包含顧客點的配料,并使用一個循環指出添加到披薩中的配料。代碼如下所示:
requested_toppings=['mushrooms','green peppers','extra cheese']
for requested_topping in requested_toppings:print("Adding "+ requested_topping+". ")
print("Finshed making your pizza!")
? ? ? 此時,如果披薩店的青椒用完了,那該如何處理?此時可以在for循環語句中包含一條if語句,向顧客表明我們的青椒用完了。代碼修改如下:
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("Adding "+ requested_topping+". ")
print("Finshed making your pizza!")
? ? ? ?隨著我們學習的深入,我們要逐漸把我們之前規定的假設去除掉。至今為止,有關列表我們做的最大的假設是“列表不為空!”。這在實際生活中是不可能一直存在的,所以我們要去掉這個假設。這個過程就需要我們在對列表進行操作前“判空”(判斷列表是不是空的列表)那么我們上面的代碼就有如下修改:
requested_toppings=[]
if requested_toppings: #如果列表不為空,則執行for循環。#(這個if語句課以理解為“列表中有東西嗎?”有執行循環)for requested_topping in requested_toppings:print("Adding " + requested_topping + ". ")print("Finshed making your pizza! ")
else:print("Are you sure you want a plain pizza? ")
我們繼續深入:顧客的要求是五花八門的,如果有的顧客要求在披薩里加薯條怎么辦?我們就需要寫代碼來對他們的要求一一回應。此時,我們可以定義兩個列表,一個是我們可以提供的原材料,一個是顧客提出來的。代碼如下:
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("Adding " + requested_topping + ". ")else:print("Sorry, we do not have "+requested_topping+". ")
print("\nFinished making your pizza! ")
可能有細心的同學注意到了,在上述代碼的第四行,檢驗顧客提到的小料是否在我們能提供的小料范圍時,我們一條if語句就搞定了,而不是像C語言那樣,還得針對requested_topping 去遍歷列表available_toppings中的每一個元素。另外,學習完本節內容,可能就會?增多對==,!=,>=,<=等符號的使用。PEP 8曾給出建議,要在比較運算符的兩側各添加一個空格,以提高代碼的閱讀性。