日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)Python教程:Pythonifelse條件語(yǔ)句詳解

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

江山網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,江山網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為江山上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的江山做網(wǎng)站的公司定做!

if 語(yǔ)句可使用任意表達(dá)式作為分支條件來進(jìn)行分支控制。Python 的 if 語(yǔ)句有如下三種形式:

第一種形式:

if expression:
    statements...

第二種形式:

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

第三種形式:

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

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

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

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

Python是一門很“獨(dú)特”的語(yǔ)言,它的代碼塊是通過縮進(jìn)來標(biāo)記的(大部分語(yǔ)言都使用花括號(hào)或 end 作為代碼塊的標(biāo)記),具有相同縮進(jìn)的多行代碼屬于同一個(gè)代碼塊。如果代碼莫名其妙地亂縮進(jìn),Python 解釋器會(huì)報(bào)錯(cuò)(前文說過,Python 不是格式自由的語(yǔ)言)。

例如如下程序:

s_age = input("請(qǐng)輸入您的年齡:")
age = int(s_age)
if age > 20 :
    # 只有當(dāng)age > 20時(shí),下面用整體縮進(jìn)的代碼塊才會(huì)執(zhí)行
    # 整體縮進(jìn)的語(yǔ)句是一個(gè)整體,要么一起執(zhí)行,要么一起不執(zhí)行
    print("年齡已經(jīng)大于20歲了")
    print("20歲以上的人應(yīng)該學(xué)會(huì)承擔(dān)責(zé)任...")

運(yùn)行上面代碼,如果輸入年齡小于 20,將會(huì)看到如下運(yùn)行結(jié)果:

請(qǐng)輸入您的年齡:18

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

運(yùn)行上面代碼,如果輸入年齡大于 20,將會(huì)看到如下運(yùn)行結(jié)果:

請(qǐng)輸入您的年齡:24
年齡已經(jīng)大于20歲了
20歲以上的人應(yīng)該學(xué)會(huì)承擔(dān)責(zé)任...

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

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

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

上面程序的 if 條件與下面的 print 語(yǔ)句位于同一條豎線上,這樣在 if 條件下就沒有受控制的代碼塊了。因此,上面程序執(zhí)行時(shí)會(huì)報(bào)出如下錯(cuò)誤:

IndentationError: expected an indented block

if 條件后的條件執(zhí)行體一定要縮進(jìn)。只有縮進(jìn)后的代碼才能算條件執(zhí)行體。

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

有些時(shí)候,Python 解釋器不會(huì)報(bào)錯(cuò),但并不代表程序沒有錯(cuò)誤。例如如下代碼:

s_age = input("請(qǐng)輸入您的年齡:")
age = int(s_age)
if age > 20 :
    print("年齡已經(jīng)大于20歲了")
print("20歲以上的人應(yīng)該學(xué)會(huì)承擔(dān)責(zé)任...")

解釋執(zhí)行上面程序,程序不會(huì)報(bào)任何錯(cuò)誤。但如果輸入一個(gè)小于 20 的年齡,則可看到如下運(yùn)行過程:

請(qǐng)輸入您的年齡:12
20歲以上的人應(yīng)該學(xué)會(huì)承擔(dān)責(zé)任...


從運(yùn)行過程可以看出,我們輸入的年齡明明小于20,但運(yùn)行結(jié)果還是會(huì)打印“20歲以上…”。這是為什么呢?就是因?yàn)檫@條 print 語(yǔ)句沒有縮進(jìn)。如果這行代碼不縮進(jìn),那么 Python 就不會(huì)把這行代碼當(dāng)成條件執(zhí)行體,它就不受 if  條件的控制,因此無(wú)論用戶輸入什么年齡,print 語(yǔ)句總會(huì)執(zhí)行。

如果忘記正確地縮進(jìn),很可能導(dǎo)致程序的運(yùn)行結(jié)果超出我們的預(yù)期。例如如下程序:

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

上面代碼中,最后一行代碼總會(huì)執(zhí)行,因?yàn)檫@行代碼沒有縮進(jìn),因此它就不屬于 else 后的條件執(zhí)行體,else 后的條件執(zhí)行體只有 b -= 1 這一行代碼。

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

if、else、elif 后的條件執(zhí)行體必須使用相同縮進(jìn)的代碼塊,將這個(gè)代碼塊整體作為條件執(zhí)行體。當(dāng)if后有多條語(yǔ)句作為條件執(zhí)行體時(shí),如果忘記了縮進(jìn)某一行代碼,則會(huì)引起語(yǔ)法錯(cuò)誤??聪旅娲a:

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

在上面代碼中,因?yàn)?if 后的條件執(zhí)行體的最后一條語(yǔ)句沒有縮進(jìn),所以系統(tǒng)只把 c-= 1 一行代碼作為條件執(zhí)行體,當(dāng) c-=1 語(yǔ)句執(zhí)行結(jié)束后,if 語(yǔ)句也就執(zhí)行結(jié)束了。后面的 print("c大于4") 己經(jīng)是一行普通代碼,不再屬于條件執(zhí)行體,從而導(dǎo)致 else 語(yǔ)句沒有if語(yǔ)句,引發(fā)編譯錯(cuò)誤。

運(yùn)行上面代碼,將看到如下錯(cuò)誤:

SyntaxError : invalid syntax

不要隨意縮進(jìn)

需要說明的是,雖然 Python 語(yǔ)法允許代碼塊隨意縮進(jìn) N 個(gè)空格,但同一個(gè)代碼塊內(nèi)的代碼必須保持相同的縮進(jìn),不能一會(huì)縮進(jìn) 2 個(gè)空格,一會(huì)縮進(jìn) 4 個(gè)空格。

例如如下代碼:

s_age = input("請(qǐng)輸入您的年齡:")
age = int(s_age)
if age > 20 :
    print("年齡已經(jīng)大于20歲了")
     print("20歲以上的人應(yīng)該學(xué)會(huì)承擔(dān)責(zé)任...")

上面程序中第 2 個(gè) print 語(yǔ)句縮進(jìn)了 5 個(gè)空格,在這樣的情況下,Python 解釋器認(rèn)為這條語(yǔ)句與前一條語(yǔ)句(縮進(jìn)了 4 個(gè)空格)不是同一個(gè)代碼塊(這就是游標(biāo)卡尺笑話的由來),因此 Python 解釋器會(huì)報(bào)錯(cuò)。運(yùn)行上面代碼,將會(huì)報(bào)出如下錯(cuò)誤:

IndentationError : unexpected indent

把代碼改為如下形式:

s_age = input("請(qǐng)輸入您的年齡:")
age = int(s_age)
if age > 20 :
    print("年齡已經(jīng)大于20歲了")
   print("20歲以上的人應(yīng)該學(xué)會(huì)承擔(dān)責(zé)任...")

上面程序中第二條 print 語(yǔ)句只縮進(jìn)了 3 個(gè)空格,它與前一條 print 語(yǔ)句(縮進(jìn)了 4 個(gè)空格)同樣不屬于同一個(gè)代碼塊,因此 Python 解釋器還是會(huì)報(bào)錯(cuò)。運(yùn)行上面代碼,則會(huì)報(bào)出如下錯(cuò)誤:


IndentationError: unindent does not match any outer indentation level

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

不要遺忘冒號(hào)

從 Python 語(yǔ)法解釋器的角度來看,Python 冒號(hào)精確表示代碼塊的開始點(diǎn)這個(gè)功能不僅在條件執(zhí)行體中如此,后面的循環(huán)體、方法體、類體全部遵守該規(guī)則。

如果程序遺忘了冒號(hào),那么 Python 解釋器就無(wú)法識(shí)別代碼塊的開始點(diǎn)。例如如下程序:

age = 24
if age > 20
    print("年齡已經(jīng)大于20歲了")
    print("20歲以上的人應(yīng)該學(xué)會(huì)承擔(dān)責(zé)任...")

上面 if 條件后忘了寫冒號(hào),因此 Python 就不知道條件執(zhí)行體的開始點(diǎn)。運(yùn)行上面程序,將會(huì)報(bào)出如下錯(cuò)誤:

SyntaxError : invalid syntax

if 條件的類型

從前面的示例可以看到,Python 執(zhí)行 if 語(yǔ)句時(shí),會(huì)判斷 if 條件是 True 還是 False 。那么 if 條件是不是只能使用 bool 類型的表達(dá)式呢?

不是。if 條件可以是任意類型,當(dāng)下面的值作為 bool 表達(dá)式時(shí),會(huì)被解釋器當(dāng)作 False 處理:

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

從上面介紹可以看出,除了 False 本身,各種代表“空”的 None、空字符串、空元組、空列表、空字典都會(huì)被當(dāng)成 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 會(huì)把它們當(dāng)成 False 處理。


文章題目:創(chuàng)新互聯(lián)Python教程:Pythonifelse條件語(yǔ)句詳解
地址分享:http://www.dlmjj.cn/article/cdgdjoo.html