本教程使用的課本是《Python編程:從入門到實踐》,作者:[美] Eric Matthes
本節學習代碼中針對不同情況進行分別處理的方法,關鍵字是if。學完這節,從理論上講,你就可以編寫任意複雜的程序了。因為計算機科學家已經證明了:任何簡單或複雜的算法都可以由順序結構、選擇結構和循環結構這三種基本結構組合而成。順序結構就是一行一行按順序寫的代碼,循環結構就是之前學過的for語句,選擇結構就是用if語句寫出的帶有分支的代碼。
一、if語句介紹
舉個例子,我們需要從眾多的下朋友中找到『小明』,並告訴他,他媽媽喊他回家吃飯了,見下面的代碼:
names = ['小明','小張','小王','小雷','小李']for name in names:if(name == '小明'):print(name,'你媽喊你回家吃飯啦!')
注意if的語句後有一個冒號「:」,少了這個編譯器會報錯。如果把if這條語句注釋掉,則會喊所有的小朋友回家吃飯,見下面的執行結果,現在知道if是做什麼用了吧。
二、條件測試
If語句括號中的代碼被稱為「條件測試」,測試條件的值可以是True或者False。如果值是True,Python就執行緊跟在if 語句後的代碼。如果為False ,Python就不執行這些代碼。
上面if語句中兩個等號「==」的意思是判斷兩邊的值是否相等,如果相等,則整個括號表達式的結果為True,否則是False。因為上例中『小張』等小朋友與『小明』不相等,所以不會執行if後面的print語句。
下面是一些常用的比較符號:
不等於:!=
大於或大於等於:> >=
小於或小於等於:< <=
If語句中的條件測試還可以用and或or來連接,and是兩個條件都滿足才為True,否則為False,而or是兩個條件都不滿足才為False,否則就為True。比如檢查兩個人是否都達到18歲,可以這樣寫:if((age1 >= 18) and (age2 >= 18)),下面是一些例子:
age = 15age2 = 17if(age <= 18):print('未成年人半價')if(age >= 18): #這條不會執行 print('成年人收全價票')if(age != 12): print('您的年齡不是12歲')if(age <= 18 and age2 <=18): print('兩個人都是未成年人,全部收半價票')
三、if語句的拓展
可以用if-elif-else這種形式來進行多次的判斷,如果其中一個條件成立,那麼Python就會執行這個條件下面的代碼,其他條件不管是否成立,裡面的代碼不執行。比如一個景區的景點針對不同年齡段收費,1-8歲免費,9-14歲半價,15-69歲全價,70歲及以上免費,寫這種判斷用if-elif-else最簡單。
ages = [15,4,21,69,77]# 1-8歲免費,9-14歲半價,15-69歲全價,70歲及以上免費for age in ages:if(age < 9 ):print('1-8歲免費',age)elif(age < 15): print('9-14歲半價',age)elif(age < 70): print('15-69歲全價',age)elif(age >= 70): print('70歲及以上免費',age)else: print('這條語句永遠不被執行')
我們稍微改造一下上面的代碼,將elif(age < 15):改成elif(age < 99):,可以看到除了4滿足第一個條件外,其他所有的元素都被第二個條件(age<99)攔截住了,後面的代碼不會執行。
if-elif-else中的else是只前面的所有條件都不滿足才執行它下面的代碼。
if-elif-else雖然好用,但當要判斷多個條件的時候就沒辦法了,這個時候只需要寫多個單獨的if()語句就行。
四、用if語句處理列表元素
我們在第一個例子「小明的媽媽喊他回家吃飯」就展示過用if語句處理列表元素的情況,下面做一些擴展。特別說明一下,用in關鍵字可以判斷一個元素是否在列表中,not in用來判斷元素不在列表中。
1、列表為空
之前我們都默認列表不為空,但列表是可以為空的,如果列表為空,我們可能要做一些初始化的動作,用If語句可以判斷列表是否為空,增加程序的健壯性。
names = []if names:for name in names:if(name == '小明'):print(name,'你媽喊你回家吃飯啦!')else: print('列表為空')
2、多個列表循環
比如我們舉辦了個晚會,提前發了請帖,沒有在清單內的人禁止進入。這裡我們有一個清單列表list_ok,還有一個來參加晚會的人員列表list_forcheck,我們需要對參加的人逐個篩選,在清單內的人列印「歡迎光臨」,不在清單內的人列印「抱歉!沒有邀請函無法進入!」。
list_ok = ['小明','小張','小王','小雷','小李']list_forcheck = ['小明','小於','小張','小王','小英','小雷','小李']for member in list_forcheck:if(member in list_ok):print(member,'歡迎光臨!')else: print(member,'抱歉!沒有邀請函無法進入!')
#Python入門教程#
長按文末點讚送三連,支持本文作者多寫點~