真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

怎么理解Pythonifelse條件語句

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

鐘山網站建設公司創(chuàng)新互聯(lián)公司,鐘山網站設計制作,有大型網站制作公司豐富經驗。已為鐘山成百上千家提供企業(yè)網站建設服務。企業(yè)網站搭建\外貿營銷網站建設要多少錢,請找那個售后服務好的鐘山做網站的公司定做!

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

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

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

例如如下程序:

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

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

請輸入您的年齡:18

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

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

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

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

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

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

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

IndentationError: expected an indented block

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 冒號精確表示代碼塊的開始點這個功能不僅在條件執(zhí)行體中如此,后面的循環(huán)體、方法體、類體全部遵守該規(guī)則。

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

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

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

SyntaxError : invalid syntax

if 條件的類型

從前面的示例可以看到,Python 執(zhí)行 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條件語句的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


文章名稱:怎么理解Pythonifelse條件語句
網站路徑:http://weahome.cn/article/jhooso.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部