文章目錄
- 定義一:Python 條件語句跟其他語言基本一致的,都是通過一條或多條語句的執行結果( True 或者 False )來決定執行的代碼塊。
- 1、什么是條件語句
- 2、if 語句的基本形式
- 3、if 語句多個判斷條件的形式
- 4、if 語句多個條件同時判斷
- 5、if 嵌套
- 定義一:`if`和`else`就是專門用于構造分支結構的關鍵字,很顯然你不能夠使用它作為變量名。
- 分支結構
- 應用場景
- if語句的使用
Python 條件語句跟其他語言基本一致的,都是通過一條或多條語句的執行結果( True 或者 False )來決定執行的代碼塊。
if
和else
就是專門用于構造分支結構的關鍵字,很顯然你不能夠使用它作為變量名。
定義一:Python 條件語句跟其他語言基本一致的,都是通過一條或多條語句的執行結果( True 或者 False )來決定執行的代碼塊。
1、什么是條件語句
Python 條件語句跟其他語言基本一致的,都是通過一條或多條語句的執行結果( True 或者 False )來決定執行的代碼塊。
Python 程序語言指定任何非 0 和非空(null)值為 True,0 或者 null 為 False。
執行的流程圖如下:
2、if 語句的基本形式
Python 中,if 語句的基本形式如下:
if 判斷條件:執行語句……
else:執行語句……
之前的章節也提到過,Python 語言有著嚴格的縮進要求,因此這里也需要注意縮進,也不要少寫了冒號 :
。
if 語句的判斷條件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)來表示其關系。
例如:
# -*-coding:utf-8-*-results=59if results>=60:print ('及格')
else :print ('不及格')
輸出的結果為:
不及格
上面也說到,非零數值、非空字符串、非空 list 等,判斷為 True,否則為 False。因此也可以這樣寫:
num = 6
if num :print('Hello Python')
輸出的結果如下:
可見,把結果打印出來了。
那如果我們把 num
改為空字符串呢?
很明顯,空字符串是為 False 的,不符合條件語句,因此不會執行到 print('Hello Python')
這段代碼。
還有再啰嗦一點,提醒一下,在條件判斷代碼中的冒號 :
后、下一行內容是一定要縮進的。不縮進是會報錯的。
冒號和縮進是一種語法。它會幫助 Python 區分代碼之間的層次,理解條件執行的邏輯及先后順序。
3、if 語句多個判斷條件的形式
有些時候,我們的判斷語句不可能只有兩個,有些時候需要多個,比如上面的例子中大于 60 的為及格,那我們還要判斷大于 90 的為優秀,在 80 到 90 之間的良好呢?
這時候需要用到 if 語句多個判斷條件,
用偽代碼來表示:
if 判斷條件1:執行語句1……
elif 判斷條件2:執行語句2……
elif 判斷條件3:執行語句3……
else:執行語句4……
實例:
# -*-coding:utf-8-*-results = 89if results > 90:print('優秀')
elif results > 80:print('良好')
elif results > 60:print ('及格')
else :print ('不及格')
輸出的結果:
良好
4、if 語句多個條件同時判斷
有時候我們會遇到多個條件的時候該怎么操作呢?
比如說要求 java 和 python 的考試成績要大于 80 分的時候才算優秀,這時候該怎么做?
這時候我們可以結合 or
和 and
來使用。
or (或)表示兩個條件有一個成立時判斷條件成功
and (與)表示只有兩個條件同時成立的情況下,判斷條件才成功。
例如:
# -*-coding:utf-8-*-java = 86
python = 68if java > 80 and python > 80:print('優秀')
else :print('不優秀')if ( java >= 80 and java < 90 ) or ( python >= 80 and python < 90):print('良好')
輸出結果:
不優秀
良好
注意:if 有多個條件時可使用括號來區分判斷的先后順序,括號中的判斷優先執行,此外 and 和 or 的優先級低于 >(大于)、<(小于)等判斷符號,即大于和小于在沒有括號的情況下會比與或要優先判斷。
5、if 嵌套
if 嵌套是指什么呢?
就跟字面意思差不多,指 if 語句中可以嵌套 if 語句。
比如上面說到的例子,也可以用 if 嵌套來寫。
當然這只是為了說明 if 條件語句是可以嵌套的。如果是這個需求,我個人還是不太建議這樣使用 if 嵌套的,因為這樣代碼量多了,而且嵌套太多,也不方便閱讀代碼。
定義一:if
和else
就是專門用于構造分支結構的關鍵字,很顯然你不能夠使用它作為變量名。
分支結構
應用場景
迄今為止,我們寫的Python代碼都是一條一條語句順序執行,這種代碼結構通常稱之為順序結構。然而僅有順序結構并不能解決所有的問題,比如我們設計一個游戲,游戲第一關的通關條件是玩家獲得1000分,那么在完成本局游戲后,我們要根據玩家得到分數來決定究竟是進入第二關,還是告訴玩家“Game Over”,這里就會產生兩個分支,而且這兩個分支只有一個會被執行。類似的場景還有很多,我們將這種結構稱之為“分支結構”或“選擇結構”。給大家一分鐘的時間,你應該可以想到至少5個以上這樣的例子,趕緊試一試。
if語句的使用
在Python中,要構造分支結構可以使用if
、elif
和else
關鍵字。所謂關鍵字就是有特殊含義的單詞,像if
和else
就是專門用于構造分支結構的關鍵字,很顯然你不能夠使用它作為變量名(事實上,用作其他的標識符也是不可以)。下面的例子中演示了如何構造一個分支結構。
"""
用戶身份驗證"""
username = input('請輸入用戶名: ')
password = input('請輸入口令: ')
# 用戶名是admin且密碼是123456則身份驗證成功否則身份驗證失敗
if username == 'admin' and password == '123456':print('身份驗證成功!')
else:print('身份驗證失敗!')
需要說明的是和C/C++、Java等語言不同,Python中沒有用花括號來構造代碼塊而是使用了縮進的方式來表示代碼的層次結構,如果if
條件成立的情況下需要執行多條語句,只要保持多條語句具有相同的縮進就可以了。換句話說連續的代碼如果又保持了相同的縮進那么它們屬于同一個代碼塊,相當于是一個執行的整體。縮進可以使用任意數量的空格,但通常使用4個空格,建議大家不要使用制表鍵或者設置你的代碼編輯工具自動將制表鍵變成4個空格。
當然如果要構造出更多的分支,可以使用if...elif...else...
結構或者嵌套的if...else...
結構,下面的代碼演示了如何利用多分支結構實現分段函數求值。
"""
分段函數求值3x - 5 (x > 1)
f(x) = x + 2 (-1 <= x <= 1)5x + 3 (x < -1)"""x = float(input('x = '))
if x > 1:y = 3 * x - 5
elif x >= -1:y = x + 2
else:y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))
當然根據實際開發的需要,分支結構是可以嵌套的,例如判斷是否通關以后還要根據你獲得的寶物或者道具的數量對你的表現給出等級(比如點亮兩顆或三顆星星),那么我們就需要在if
的內部構造出一個新的分支結構,同理elif
和else
中也可以再構造新的分支,我們稱之為嵌套的分支結構,也就是說上面的代碼也可以寫成下面的樣子。
"""
分段函數求值3x - 5 (x > 1)
f(x) = x + 2 (-1 <= x <= 1)5x + 3 (x < -1)"""x = float(input('x = '))
if x > 1:y = 3 * x - 5
else:if x >= -1:y = x + 2else:y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))
說明: 大家可以自己感受一下這兩種寫法到底是哪一種更好。在之前我們提到的Python之禪中有這么一句話“Flat is better than nested.”,之所以提倡代碼“扁平化”是因為嵌套結構的嵌套層次多了之后會嚴重的影響代碼的可讀性,所以能使用扁平化的結構時就不要使用嵌套。