三分鐘搞定Python流程控制的單個,兩個,多個條件怎麼實現

流程控制也是Python的基本能力之一,它的作用是控制程式執行的路徑,通常需要搭配條件來使用。只有滿足條件之後,直譯器才會執行對應的指令,而避開其它路徑中的指令。它經常出現在各大程式設計場景,因此,也是必須掌握的。

三分鐘搞定Python流程控制的單個,兩個,多個條件怎麼實現

本節將介紹以下3種流程控制方式:

單個if條件

2個條件的if。。。else。。。

多個條件的if 。。。 elif。。。else。。。

單個if條件

假設你想設計一個函式,這個函式的功能是:輸入一個過去的時間點,根據當前時間點與過去時間點的跨度,輸出不同格式的時間提示。如果要實現這個功能,我們可以使用單個if條件來完成,以下就是相對應的例子。

import time, datetimedef datetime_filter(t): delta = int(time。time() - t) if delta < 60: return ‘1分鐘前’ if delta < 3600: return ‘%s分鐘前’ % (delta // 60) if delta < 86400: return ‘%s小時前’ % (delta // 3600) if delta < 604800: return ‘%s天前’ % (delta // 86400) dt = datetime。datetime。fromtimestamp(t) return ‘%s年%s月%s日’ % (dt。year, dt。month, dt。day)

它的執行路徑是:

如果

delta < 60

True

則返回以分鐘為單位的計算結果,否則繼續執行以下指令,

如果

delta < 3600

True

則返回以分鐘為單位的計算結果,否則繼續執行以下指令,

如果

delta < 86400

True

則返回以小時為單位的計算結果,否則繼續執行以下指令,

如果

delta < 604800

True

則返回以天為單位的計算結果,否則繼續執行以下指令,

如果上述條件都為

False

則返回以年月日為單位的計算結果。

2個條件的if。。。else。。。

以下是來自digwebs的程式碼片段

if __name__ == ‘__main__’: digwebs_app。run(9999, host=‘0。0。0。0’)else: wsgi_app = digwebs_app。get_wsgi_application()

它的含義是:如果__name__ == ‘__main__’為True,那麼Python直譯器將執行指令digwebs_app。run(9999, host=‘0。0。0。0’),否則Python直譯器將執行wsgi_app = digwebs_app。get_wsgi_application()。

多個條件的if 。。。 elif。。。else。。。

Python中沒有switch 。。。 case 。。。,取而代之的是多個條件的if 。。。 elif 。。。 else 。。。。下面的例子將字串v中除了字母和數字的其它字元替換成空格,最終s的值是I Love Digwebs。

s = ``v = `I~-Lo!#$%v^^^^e+++Dig[we}bs`for ch in v: if ch>=‘0’ and ch<=‘9’: s = s + ch elif ch>=‘A’ and ch<=‘Z’: s = s + ch elif ch>=‘a’ and ch<=‘z’: s = s + ch else: s = s + ‘ ’

總結

以上就是Python支援的3種流程控制語句,通常你需要搭配一些條件來使用。它們會經常出現在Python指令碼中,因此你必須掌握它們。值得注意的是,Python是透過指令縮排的方式來確定作用域的,因此如果某塊邏輯屬於同一個條件,那麼這塊邏輯的縮排需要保持一致。你可能會遇到一種情況:需要反覆執行一些任務,這也是流程控制的一部分,只不過它是Python中的另外一個經常用到的能力:迴圈。