
前言:本專欄以Python為主題,并盡可能保持每星期兩到三更,直到將Python的基礎知識淺析和講解完畢,同時,有一定基礎的同學可以移步 Python實戰專欄 。
背景:對于該系列文章的前三篇,自己讀過的同學應該能發現一個問題,那就是我們寫的所有代碼都是一路“直行”的,無法根據指定條件選擇不同的途徑,這顯然是不合理的。就好像你要到達一個目的地,只會盲目直行,不會根據特定條件停止或者轉彎,那大多數時候你是無法到達這個目的地的。在Python的程序設計就,就提供了用于“轉彎”的語句,即 if,elif,else這三個關鍵詞組成的語句。以下將以Python中的分支語句為主題進行展開。
- Python中的分支的主要結構(3種)
# 第一種
首先,上面展示了三種Python中的分支結構。先看看第一種,仔細觀察,會發現這么一個特點,那就是,以 if為關鍵詞,聲明這是一個分支,然后 if 的后面跟一個條件,這里用condition來概括,那么這個條件有什么用呢?是這樣子的,以 5==6 這個代碼為例,這是一個判斷左右兩邊數字是否相等的條件,如果相等,那這行代碼運行之后會得到 Ture ,但不會顯示在屏幕上,對于 if來說,如果與它同行并且在其后面的 碼運行只會返回了 True 或者數字 1,那么就會滿足這個 if 分支下面的代碼執行條件,該分支下面的代碼塊就會被執行。再看看 if 所在行的那個一個冒號,它標志這條件的結束,即 if 和 冒號之間包裹著條件。接著看 if 的下一行,你會發現 dosomething 與f的水平距離不一致,這個距離一般為一個 Tab 鍵的長度,這有什么用呢?它的作用就是為了區分代碼的層次等級,以這個 if 分支為例,dosomtehing與 if 的水平距離為一個 Tab 鍵,那這個dosomething就從屬于if。如果 if 是爸爸,那 dosomething就是親生子女。當然子女如果再繁殖,那之前的子女就會變爸爸,之前的爸爸就會變爺爺了,依次類推(這屬于分支嵌套的范疇,暫不展開討論)。
第一種講完,接下來是第二種。仔細觀察,發現第二種與第一種的差別是,多了一個 else。這如何理解呢?else就是否則的意思,if 是如果。舉個例子,如果今天下雨我就不出去玩,否則我就出去玩。這個例子中 “今天不下雨” 對于第二種代碼中的 condition ,而else與冒號之間并沒有所謂的condition,這是因為沒有必要,我只要對 “今天不下雨” 這個條件進行否定就行了,沒有必要再列舉出其他條件(如果想列舉請看第三種),而出不出去玩就是滿足某個條件之后要去做的事情了。所以else可以理解為,"如果滿足排除condition的一切其他條件"。這么看,else也和if的本質上都是一樣的,都是對某個或者多個條件進行判斷,else只是偷了一下懶,不過它很大度,滿足不了 if 的條件都能滿足它。至于else下一行的do_another_thing就無需多言了,和if中的dosomething一樣,都是滿足某個條件之后要執行的代碼塊。
最后是第三種,生活中的條件不可能全部都只有兩種。在Python中,如果你想處理多個條件,那第三種分支結構很有必要,第三種分支結構特點是,先if,然后 if 后面可以有多個elif,elif的意思的如果不滿足前面條件并且滿足elif后面跟著的條件那就執行該elif分支下面的代碼塊,這么講可能不好理解,沒關系,下面有舉例。并且elif的后面可以跟著else,當然也可以省略。
以上是一些理論,下面我們將通過一個兩個程序來運用這些知識。
# 設定初始用戶名
account = '123456'
# 設定初始密碼
password = '123456'
# 接受用戶輸入的用戶名并存儲到 ac 這個變量中
ac = input("請輸入用戶名:")
# 接受用戶輸入的密碼并存儲到 pwd 這個變量中
pwd = input("請輸入密碼:")
# 判斷輸入的用戶名與給定的用戶名是否一致,如果一致就繼續判斷密碼與給定的密碼是否一致
if ac==account:
# 如果給定的密碼與輸入的密碼一致,輸出 登錄成功 這個信息
if password == pwd: print("登錄成功!")
# 否則(即給定密碼與輸入的密碼不一致),輸出 密碼有誤 這個信息
else: print("密碼有誤")
# 否則(即輸入的用戶名與給定的不一致),輸出 用戶名有誤,登錄失敗 這個信息
else: print("用戶名有誤,登錄失敗!")
上面這個程序的目的是,從鍵盤中接受用戶輸入的賬戶與密碼,再與給定的賬戶與密碼進行比對以達到驗證登錄的目的。代碼注釋已附上。
age = input("輸入你的年齡:")
# 通過 input 函數接受的輸入類型都是字符串,后續為了用數字進行比較,故此選用int函數將字符串轉為數字
age = int(age)
# < 用于 數字的大小比較,即左邊的是否小于右邊
if age<0: print("年齡不會有比 0 小的吧?")
# <= 用于 數字的大小比較,即左邊的是否小于或者等于右邊,
# 只要滿足小于或者等于這其中的任意一個條件,那么這個條件就是成立的
elif 0<=age<18: print("祖國的花朵!")
elif 18<=age<45: print("祖國的中堅力量!")
else: print("前輩辛苦了!")
上面這個程序的目的是,從鍵盤中接受用戶輸入的年齡(千萬要記得將其轉化為數字),再根據特點條件輸出不同提示信息。代碼注釋已附上。
2.Python中的分支的結構常用詞

代碼演示
if
以上代碼展示是表格中幾個關鍵詞的用法,建議都要熟練掌握。