中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解Python if else條件語句

發布時間:2020-08-25 16:38:33 來源:億速云 閱讀:237 作者:Leah 欄目:編程語言

怎么理解Python if else條件語句?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

if 分支使用布爾表達式或布爾值作為分支條件來進行分支控制。Python 的 if 分支既可作為語句使用,也可作為表達式使用。下面先介紹 if 分支作為語句使用的情形。

if 語句可使用任意表達式作為分支條件來進行分支控制。Python 的 if 語句有如下三種形式:

第一種形式:

if expression:
    statements...

第二種形式:

if expression
    statements...
else:
    statements...

第三種形式:

if expression:
    statements...
elif expression:
    statements...
...//可以有零條或多條elif語句
else:
    statement...

在上面 if 語句的三種形式中,第二種形式和第三種形式是相通的,如果第三種形式中的 elif 塊不出現,則變成了第二種形式。

對于上面的 if 分支語句,執行過程是非常簡單的,即如果 if 條件為“真”,程序就會執行 if 條件后面的多條語句;否則就會依次判斷 elif 條件,如果 elif 條件為“真”,程序就會執行 elif 條件后面的多條語句……如果前面所有條件都為“假”,程序就會執行 else 后的代碼塊(如果有)。

在上面的條件語句中,if expression:、elif expression:及 else:后縮進的多行代碼被稱為代碼塊,一個代碼塊通常被當成一個整體來執行(除非在運行過程中遇到return、break、continue等關鍵字),因此這個代碼塊也被稱為條件執行體。

Python是一門很“獨特”的語言,它的代碼塊是通過縮進來標記的(大部分語言都使用花括號或 end 作為代碼塊的標記),具有相同縮進的多行代碼屬于同一個代碼塊。如果代碼莫名其妙地亂縮進,Python 解釋器會報錯(前文說過,Python 不是格式自由的語言)。

例如如下程序:

s_age = input("請輸入您的年齡:")
age = int(s_age)
if age > 20 :
    # 只有當age > 20時,下面用整體縮進的代碼塊才會執行
    # 整體縮進的語句是一個整體,要么一起執行,要么一起不執行
    print("年齡已經大于20歲了")
    print("20歲以上的人應該學會承擔責任...")

運行上面代碼,如果輸入年齡小于 20,將會看到如下運行結果:

請輸入您的年齡:18

從上面代碼可以看出,如果輸入的年齡小于 20,則程序沒有任何輸出,整體縮進的語句作為整體都不會執行。

運行上面代碼,如果輸入年齡大于 20,將會看到如下運行結果:

請輸入您的年齡:24
年齡已經大于20歲了
20歲以上的人應該學會承擔責任...

從上面代碼可以看出,如果輸入的年齡大于 20 ,則程序會執行整體縮進的代碼塊。

代碼塊一定要縮進,否則就不是代碼塊。例如如下程序:

s_age = input("請輸入您的年齡:")
age = int(s_age)
if age > 20 :
print("年齡已經大于20歲了")

上面程序的 if 條件與下面的 print 語句位于同一條豎線上,這樣在 if 條件下就沒有受控制的代碼塊了。因此,上面程序執行時會報出如下錯誤:

IndentationError: expected an indented block

if 條件后的條件執行體一定要縮進。只有縮進后的代碼才能算條件執行體。

接下來讀者會產生一個疑問:代碼塊(條件執行體)到底要縮進多少呢?這個隨意。你可以縮進 1 個空格、2 個空格、3 個空格…… 或 1 個 Tab 位,這都是符合語法要求的。但從編程習慣來看,Python 通常建議縮進 4 個空格。

有些時候,Python 解釋器不會報錯,但并不代表程序沒有錯誤。例如如下代碼:

s_age = input("請輸入您的年齡:")
age = int(s_age)
if age > 20 :
    print("年齡已經大于20歲了")
print("20歲以上的人應該學會承擔責任...")

解釋執行上面程序,程序不會報任何錯誤。但如果輸入一個小于 20 的年齡,則可看到如下運行過程:

請輸入您的年齡:12
20歲以上的人應該學會承擔責任...

從運行過程可以看出,我們輸入的年齡明明小于20,但運行結果還是會打印“20歲以上…”。這是為什么呢?就是因為這條 print 語句沒有縮進。如果這行代碼不縮進,那么 Python 就不會把這行代碼當成條件執行體,它就不受 if  條件的控制,因此無論用戶輸入什么年齡,print 語句總會執行。

如果忘記正確地縮進,很可能導致程序的運行結果超出我們的預期。例如如下程序:

#定義變量b,并為其賦值
b = 5
if b > 4 :
    #如果b>4,則執行下面的條件執行體,只有一行代碼作為代碼塊
    print("b大于4")
else:
    #否則,執行下面的條件執行體,只有一行代碼作為代碼塊
    b -= 1
#對于下面代碼而言,它己經不再是條件執行體的一部分,因此總會執行
print("b不大于4")

上面代碼中,最后一行代碼總會執行,因為這行代碼沒有縮進,因此它就不屬于 else 后的條件執行體,else 后的條件執行體只有 b -= 1 這一行代碼。

如果要讓 print("b不大于4") 語句也處于 else 控制之下,則需要讓這行代碼也縮進 4 個空格。

if、else、elif 后的條件執行體必須使用相同縮進的代碼塊,將這個代碼塊整體作為條件執行體。當if后有多條語句作為條件執行體時,如果忘記了縮進某一行代碼,則會引起語法錯誤。看下面代碼:

# 定義變量c,并為其賦值
c = 5
if c > 4:
    # 如果c>4,則執行下面的執行體,將只有c--一行代碼為執行體
    c -= 1
# 下面是一行普通代碼,不屬于執行體
print("c大于4")
# 此處的else將沒有if語句,因此編譯出錯
else
    # 否則,執行下面的執行體,只有一行代碼作為代碼塊
    print("c不大于4")

在上面代碼中,因為 if 后的條件執行體的最后一條語句沒有縮進,所以系統只把 c-= 1 一行代碼作為條件執行體,當 c-=1 語句執行結束后,if 語句也就執行結束了。后面的 print("c大于4") 己經是一行普通代碼,不再屬于條件執行體,從而導致 else 語句沒有if語句,引發編譯錯誤。

運行上面代碼,將看到如下錯誤:

SyntaxError : invalid syntax

不要隨意縮進

需要說明的是,雖然 Python 語法允許代碼塊隨意縮進 N 個空格,但同一個代碼塊內的代碼必須保持相同的縮進,不能一會縮進 2 個空格,一會縮進 4 個空格。

例如如下代碼:

s_age = input("請輸入您的年齡:")
age = int(s_age)
if age > 20 :
    print("年齡已經大于20歲了")
     print("20歲以上的人應該學會承擔責任...")

上面程序中第 2 個 print 語句縮進了 5 個空格,在這樣的情況下,Python 解釋器認為這條語句與前一條語句(縮進了 4 個空格)不是同一個代碼塊(這就是游標卡尺笑話的由來),因此 Python 解釋器會報錯。運行上面代碼,將會報出如下錯誤:

IndentationError : unexpected indent

把代碼改為如下形式:

s_age = input("請輸入您的年齡:")
age = int(s_age)
if age > 20 :
    print("年齡已經大于20歲了")
   print("20歲以上的人應該學會承擔責任...")

上面程序中第二條 print 語句只縮進了 3 個空格,它與前一條 print 語句(縮進了 4 個空格)同樣不屬于同一個代碼塊,因此 Python 解釋器還是會報錯。運行上面代碼,則會報出如下錯誤:

IndentationError: unindent does not match any outer indentation level

通過上面介紹可以看出,Python 代碼塊中的所有語句必須保持相同的縮進,既不能多,也不能少。

不要遺忘冒號

從 Python 語法解釋器的角度來看,Python 冒號精確表示代碼塊的開始點這個功能不僅在條件執行體中如此,后面的循環體、方法體、類體全部遵守該規則。

如果程序遺忘了冒號,那么 Python 解釋器就無法識別代碼塊的開始點。例如如下程序:

age = 24
if age > 20
    print("年齡已經大于20歲了")
    print("20歲以上的人應該學會承擔責任...")

上面 if 條件后忘了寫冒號,因此 Python 就不知道條件執行體的開始點。運行上面程序,將會報出如下錯誤:

SyntaxError : invalid syntax

if 條件的類型

從前面的示例可以看到,Python 執行 if 語句時,會判斷 if 條件是 True 還是 False 。那么 if 條件是不是只能使用 bool 類型的表達式呢?

不是。if 條件可以是任意類型,當下面的值作為 bool 表達式時,會被解釋器當作 False 處理:

False、None、0、""、()、[]、{}

從上面介紹可以看出,除了 False 本身,各種代表“空”的 None、空字符串、空元組、空列表、空字典都會被當成 False 處理。

例如如下代碼:

s = ""
if s :
    print('s不是空字符串')
else:
    print('s是空字符串')
# 定義空列表
my_list = []
if my_list:
    print('my_list不是空列表')
else:
    print('my_list是空列表')
# 定義空字典
my_dict = {}
if my_dict:
    print('my_dict不是空字典')
else:
    print('my_dict是空字典')

從上面的粗體字代碼可以看出,這些 if 條件分別使用了 str 類型、list 類型、dict 類型,由于這些 str、list、dict 都是空值,因此 Python 會把它們當成 False 處理。


看完上述內容,你們掌握怎么理解Python if else條件語句的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

彝良县| 建昌县| 平武县| 峡江县| 格尔木市| 保亭| 海原县| 沈阳市| 象山县| 宁晋县| 静安区| 扎赉特旗| 临猗县| 馆陶县| 永昌县| 股票| 吉木萨尔县| 合水县| 新建县| 阿拉尔市| 双柏县| 西华县| 米脂县| 镇平县| 喀喇沁旗| 开远市| 车致| 鄄城县| 岑巩县| 邮箱| 玉田县| 嘉兴市| 南通市| 团风县| 岳阳县| 兴义市| 双牌县| 新郑市| 德化县| 肇州县| 镇宁|