欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

歸納整理Python中的控制流語句的知識點(diǎn)

 更新時(shí)間:2015年04月14日 10:22:55   投稿:goldensun  
這篇文章主要?dú)w納整理了Python中的控制流語句的知識點(diǎn),來自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下

程序流

Python 解釋器在其最簡單的級別,以類似的方式操作,即從程序的頂端開始,然后一行一行地順序執(zhí)行程序語句。例如,清單 1 展示了幾個(gè)簡單的語句。當(dāng)把它們鍵入 Python 解釋器中(或者將它們保存在一個(gè)文件中,并作為一個(gè) Python 程序來執(zhí)行)時(shí),讀取語句的順序是從左到右。 當(dāng)讀到一個(gè)行結(jié)束符(比如換行符)時(shí),Python 解釋器就前進(jìn)到下一行并繼續(xù),直到?jīng)]有了代碼行。
清單 1. 一個(gè)簡單的 Python 程序

>>> i = 1
>>> type(i)
<type 'int'>
>>> l = [0, 1, 2, 3, 4]
>>> l * i
[0, 1, 2, 3, 4]

在本例中,語句以簡單的順序一個(gè)接一個(gè)。但是情況并不總是線性的。考慮一個(gè)個(gè)人的例子。您今天早上醒來,聽了交通或天氣報(bào)告(或者兩者都聽了)。根據(jù)交通報(bào)告,您可能選擇了一條不同的上班路線;或者類似地,根據(jù)天氣報(bào)告,您為周末計(jì)劃了不同的活動。您的對策并不簡單;根據(jù)您所獲得的信息,生活的自然順序迂回而曲折。

Python 像大多數(shù)編程語言一樣,通過使用流控制語句,也可以以這種方式操作。在 Python 中,有 3 種基本的流控制語句:

  1.     if 語句,它基于測試表達(dá)式的結(jié)果執(zhí)行一個(gè)特定的語句塊。
  2.     while 循環(huán),它當(dāng)一個(gè)測試表達(dá)式為 true 時(shí)執(zhí)行一個(gè)語句塊。
  3.     for 循環(huán),它對一個(gè)語句塊執(zhí)行一定次數(shù)。

這個(gè)列表相當(dāng)簡單,并且您可能從其他編程語言認(rèn)識了這些流控制語句。但是您可能在想,語句塊 是什么意思呢。在清單 1 中,您看到了幾個(gè)簡單的語句,包括一個(gè)變量初始化、一個(gè)方法調(diào)用(type 方法)和一個(gè)乘法操作。這些語句執(zhí)行一個(gè)簡單的操作,因此把它們叫做簡單語句。

Python 也具有復(fù)合語句,即相關(guān)語句形成的語句組,其中包括簡單和(可能)附加的復(fù)雜語句。例如,根據(jù)表達(dá)式的值(對個(gè)人來說,可能是對“今天的天氣晴朗嗎”之類問題的答案),一個(gè)復(fù)合語句可能執(zhí)行不同的操作或者對一個(gè)操作重復(fù)多次。這一描述似乎有些類似于前一段的流控制描述。當(dāng)然應(yīng)該類似,因?yàn)榱骺刂普Z句就是復(fù)合語句。

一個(gè)復(fù)合語句包括一個(gè)流控制指令,后跟一個(gè)冒號(:),然后再是一個(gè)程序語句塊。語句塊由一個(gè)或多個(gè)簡單語句和復(fù)合語句組成。清單 2 中提供了一個(gè)簡單的偽代碼例子。
清單 2. 一個(gè)偽代碼例子展示了簡單語句和復(fù)雜語句

simple statement one
compound statement one:
  simple statement two
  simple statement three
  compound statement two:
    simple statement four
simple statement five

該語法看起來既熟悉又陌生,并且兩種感覺來自相同的事情:縮進(jìn)。在列大綱或步驟時(shí),您可能會使用不同級別的縮進(jìn)來分隔每一項(xiàng),使得列出來的東西更加清晰可讀。Python 遵循這一模型,使用縮進(jìn)來分隔代碼塊與程序的其余部分。其他編程語言使用特殊的字符來區(qū)分代碼塊,比如基于 C 的語言中的花括號({ 和 })。這些其他語言也鼓勵(lì)程序員使用縮進(jìn),以改善程序的可讀性。

另一方面,Python 需要縮進(jìn)以指示代碼塊。如果沒有正確地縮進(jìn),Python 解釋器會拋出異常??梢允褂弥票矸麃順?biāo)記縮進(jìn),但是一般推薦使用空格。(為了一致性,我總是使用 4 個(gè)空格來縮進(jìn)代碼塊。)理由很簡單:空格字符只有一種解釋方式。另一方面,制表符可以有不同的解釋方式,根據(jù)所使用的平臺或工具,可以解釋為 2 個(gè)、4 個(gè)、6 個(gè)甚至 8 個(gè)空格。
增強(qiáng)程序可讀性

縮進(jìn)要求可能是 Python 的一個(gè)基本指導(dǎo)原則 —— Python 程序應(yīng)該易于讀和理解 —— 的最佳例子。但是這就跟工具一樣,頑固分子也可能會編寫晦澀的 Python 代碼。例如,螺絲起子是用來起螺絲的,但是有時(shí)您也可能用來打開油漆蓋子。

兩個(gè)其他特性有助于編寫易讀的 Python 程序,并且這兩者都遵循前面所用的書的比喻。首先,書中的行不會延伸到頁面外面,都有固定的長度。其次,書中的行不是以特殊符號(比如分號)結(jié)束。這兩個(gè)特性都貫穿于編寫 Python 程序的過程中。

如果某個(gè)程序行太長,可以在文件中的下一物理行繼續(xù)這一行。沒有硬性規(guī)定一個(gè)代碼行應(yīng)該多長。但是一般限制為 80 個(gè)字符,這容易適合大多數(shù)顯示器的一個(gè)打印頁面。有幾種方式來擴(kuò)展超過一行的代碼語句:

  •     三引號字符串可以擴(kuò)展到多個(gè)行。
  •     括號中的表達(dá)式可以擴(kuò)展到多個(gè)行。
  •     可以使用繼續(xù)字符(\)來在多行分割語句。

在 Python 中,不需要使用特殊字符(或符號)來指示語句的結(jié)束。這與有些語言不同。例如,基于 C 的語言使用分號(;)來指示代碼行的結(jié)束。然而,有時(shí)候需要在一行放多個(gè)程序語句,例如初始化變量時(shí)。在這樣的情況下,可以使用分號來分隔單個(gè)語句。

清單 3 中演示了這兩種技術(shù)。
清單 3. 演示 Python 的可讀性技術(shù)

>>> i1 = 10 ; i2 = 20 ; i3 = 30
>>>
>>> b = ((i1 < 20) and
...   (i2 < 30) and
...   (i3 < 40))
>>> b
True
>>>
>>> b = (i1 < 20) and \
...   (i2 < 30) and \
...   (i3 < 40)
>>> 
>>> b
True

注意清單 3 中擴(kuò)展到多個(gè)行的程序語句是如何縮進(jìn)以改善可讀性的。在本例中,縮進(jìn)不是強(qiáng)制性的,就跟一個(gè)復(fù)合語句一樣。但是正如您所見,縮進(jìn)改善了程序的外觀,因而強(qiáng)烈推薦進(jìn)行縮進(jìn)。

if 語句

最簡單的流控制語句是 if 語句,它的基本語法在清單 4 中的偽代碼中演示了。if 語句在一個(gè)布爾表達(dá)式計(jì)算為 True 時(shí)執(zhí)行一個(gè)程序語句塊。if 語句支持一個(gè)可選的 else 子句,指示當(dāng)布爾表達(dá)式計(jì)算為 False 時(shí)應(yīng)該處理的程序語句塊。
清單 4. if 語句的基本語法

if(expression one):
  # Action to take if expression one evaluates True
else:
  # Action to take if all expression one evaluates False

如果您使用過其他編程語言,那么該語法看起來可能既熟悉又陌生。相似之處在于 if 語句的一般格式、名稱、用于確定如何分支語句執(zhí)行流的表達(dá)式的計(jì)算,以及用于處理當(dāng)表達(dá)式計(jì)算為 False 時(shí)的情況的 else 子句。但是有兩個(gè)方面是完全特定于 Python 的:帶有冒號字符的 if 和 else 語句的終止,以及 if 和 else 塊中語句的縮進(jìn)。正如所提到的,這兩個(gè)特征是 Python 中流控制語句所必需的。

在清單 5 中,一個(gè)簡單的 if/else 條件測試一個(gè)給定的數(shù)字是奇數(shù)還是偶數(shù),并打印出結(jié)果。
清單 5. 一個(gè)簡單的 if 語句例子

>>> i = 8
>>> if(i % 2):
...   print "Odd Number"
... else:
...   print "Even Number"
... 
Even Number

一個(gè)似乎有些混亂的地方是 if 語句后面每一行前面的三個(gè)點(diǎn)(...)。當(dāng)鍵入 if 語句和終止的冒號,并按鍵盤上的回車鍵時(shí),Python 解釋器就知道您輸入了一個(gè)復(fù)合語句。因此,它就將提示符從三個(gè)大于符號(>>>)改為三個(gè)點(diǎn)(...)。因?yàn)?Python 需要縮進(jìn)以錯(cuò)開當(dāng)表達(dá)式計(jì)算為 True 或 False 時(shí)應(yīng)該執(zhí)行的語句塊,所以兩個(gè) print 語句都縮進(jìn)了 4 個(gè)空格。

if 語句(以及本文后面討論的 elif 子句和 while 循環(huán))中的表達(dá)式可以很復(fù)雜。它可以包括多個(gè)使用 Python 中支持的不同關(guān)系運(yùn)算符的子表達(dá)式。而子表達(dá)式又可使用 and、or 和 not 邏輯運(yùn)算符組合起來。本系列的第一篇文章“探索 Python,第 1 部分:Python 的內(nèi)置數(shù)值類型”,包含更多關(guān)于布爾表達(dá)式和 Python 中不同關(guān)系和邏輯運(yùn)算符的信息。

至此,已經(jīng)看到了 if 語句可以如何用于根據(jù)一個(gè)特定布爾表達(dá)式的值,來執(zhí)行兩個(gè)程序語句塊中的其中一個(gè)。然而在有些情況下,可能需要更多的選擇。幸運(yùn)的是,Python 提供了 if 語句的一個(gè)簡單擴(kuò)展。提供的解決方案非常簡單:給 else 子句添加一個(gè)額外的 if 語句。結(jié)果是一個(gè) else if 語句,簡寫為 elif,如清單 6 所示。
清單 6. 使用 elif 語句

>>> i = -8
>>> if(i > 0):
...   print "Positive Integer"
... elif(i < 0):
...   print "Negative Integer"
... else:
...   print "Zero"
... 
Negative Integer

本例只包含一個(gè) elif 語句,而實(shí)際中可根據(jù)程序需要包含任意多個(gè)。盡管它不是最優(yōu)的解決方案,但是多個(gè) elif 語句可以用于模擬其他一些語言中的 switch case 語句。

while 循環(huán)

Python 中的第二種流控制語句是 while 循環(huán),它在一個(gè)表達(dá)式計(jì)算為 True 時(shí)執(zhí)行一個(gè)程序語句塊。while 循環(huán)與 if 語句一樣,支持一個(gè)可選的 else 子句,其中包含一個(gè)當(dāng)表達(dá)式計(jì)算為 False 時(shí)執(zhí)行的程序語句塊。但是對于 while 循環(huán),這意味著在循環(huán)終止后,else 子句中的代碼被執(zhí)行一次(參見清單 7 中的偽代碼)。
清單 7. while 循環(huán)的偽代碼

while (expression):
  # statements to execute while loop expression is True
else:
  # statements to execute when loop expression is False

理解了 if 語句之后,while 循環(huán)理解起來就相當(dāng)簡單了。但是一定要知道,循環(huán)一直要執(zhí)行到表達(dá)式計(jì)算為 False。這意味著循環(huán)體中執(zhí)行的程序語句必須要改變表達(dá)式的值,否則循環(huán)將無法結(jié)束。如清單 8 所示。
清單 8. while 循環(huán)的一個(gè)簡單例子

>>> i = 0 ; x = 10
>>> while(x > 0):
...   i+=1 ; x -= 1
... else:
...   print i, x
... 
10 0

該例演示了幾件事情。首先,它在一行中組合了變量初始化和變量修改:在本例中是 i 和 x 變量。其次,分別使用縮寫形式的運(yùn)算符 += 和 -= 來遞增 i 的值和遞減 x 的值。在本例中,循環(huán)開始時(shí) x 的值為 10。每通過一次循環(huán),x 的值就遞減 1。最后,x 的值為 0,此時(shí)循環(huán)退出,并執(zhí)行 else 子句中的代碼,打印出兩個(gè)變量的值。

while 循環(huán)(與本文后面介紹的 for 循環(huán)一樣)支持三種附加語句:

  1.     continue
  2.     break
  3.     pass

continue 和 break 語句分別用于在 while 循環(huán)中繼續(xù)下一次循環(huán)或中斷循環(huán)。這兩個(gè)語句通常放在 if 語句體中,以便由一個(gè)特殊的條件觸發(fā) continue 或 break 操作。break 語句的一個(gè)特殊特性是,它完全中斷循環(huán),并跳轉(zhuǎn)到循環(huán)下面的任一個(gè) else 子句。

pass 語句什么都不做。它用作一個(gè)占位符,即在需要一個(gè)語句,但是程序邏輯不需要操作時(shí)使用。清單 9 中演示了這三種語句。
清單 9. 使用 continue、break 和 pass 語句

>>> i = 1
>>> while(i < 1000):
...   i *= 5
...   if(i % 25):
...     continue
...   if not (i % 125): 
...     break
...   if not (i % 1000):
...     pass
... else:
...   print i
... 
>>> print i
125

這個(gè)虛構(gòu)的例子一直循環(huán)到變量 i 大于或等于 1,000。在循環(huán)中,將 i 乘以 5,然后測試 i 是否被 25 整除。記住,您只在表達(dá)式為 True 時(shí)執(zhí)行 if 語句體。該表達(dá)式在當(dāng)變量 i 不能被 25 整除時(shí)計(jì)算為 True。(在 Python 表達(dá)式中,非零數(shù)被計(jì)算為布爾值 True。)

循環(huán)體中的下一個(gè)語句是第二個(gè) if 語句,它測試變量 i 是否能被 125 整除,但是該表達(dá)式前面加了一個(gè) not 運(yùn)算符。因此,當(dāng)變量 i 的值能被 125 整除時(shí)執(zhí)行第二個(gè) if 語句體。此時(shí),break 語句導(dǎo)致程序執(zhí)行中斷 while 循環(huán),跳轉(zhuǎn)到 else 子句。

最后一個(gè) if 語句永遠(yuǎn)不會執(zhí)行,只是用于演示如何在程序中編寫 pass 語句。在后續(xù)文章中,將會介紹 pass 語句更相關(guān)的一些情況。

通過跟蹤程序的邏輯流可以看到,第一次通過循環(huán)后,變量 i 的值變?yōu)?5。第一個(gè) if 語句計(jì)算為 True,因?yàn)?5 不能被 25 整除。這就會第二次進(jìn)入 while 循環(huán),這次變量 i 變成了 25?,F(xiàn)在第一個(gè) if 語句計(jì)算為 False,因?yàn)?25 能被 25 整除。第二個(gè)和第三個(gè) if 語句也計(jì)算為 False,意味著第三次進(jìn)入循環(huán)。這次變量 i 變成了 125,并且第一個(gè) if 語句計(jì)算為 False。

但是第二個(gè) if 語句計(jì)算為 True,因?yàn)樽兞?i 能被 125 整除(并且 not 運(yùn)算符將結(jié)果 0 轉(zhuǎn)換成布爾值 True)。這導(dǎo)致執(zhí)行 break 語句,中斷循環(huán)。else 子句永遠(yuǎn)不被執(zhí)行,所以直到顯式使用 print 語句之前不會輸出任何東西。

for 循環(huán)

Python 中的 for 循環(huán)很特殊,與 Python 編程語言中內(nèi)置的容器數(shù)據(jù)類型緊密相關(guān)。當(dāng)您在現(xiàn)實(shí)生活中有一個(gè)容器對象(比如書包)時(shí),您通常想要看它所包含的東西。在編寫 Python 程序時(shí)也是這樣的。當(dāng)需要對某件事情做一定的次數(shù)時(shí)(就像針對容器中的每一項(xiàng)一樣),可使用 for 循環(huán)。清單 10 中的偽代碼格式演示了 for 循環(huán)。
清單 10. for 循環(huán)的偽代碼

for item in container:
  # action to repeat for each item in the container
else:
  # action to take once we have finished the loop.

由于 Python 容器類型的豐富特性,for 循環(huán)非常強(qiáng)大。本質(zhì)上,for 循環(huán)涉及到一個(gè)迭代器(iterator),用于在集合中逐項(xiàng)移動。本系列的下一篇文章將更加詳細(xì)地介紹 for 循環(huán),以及如何正確地將它與不同容器類型一起使用。

控制流

本文介紹了三種 Python 程序語句:if 語句、while 循環(huán)和 for 循環(huán)。這三種語句通過選擇執(zhí)行哪些語句,或者通過多次執(zhí)行一組語句,讓您可以改變程序流。在后續(xù)文章中將大量用到這些語句。復(fù)合語句的特性引入了 Python 程序中的適當(dāng)縮進(jìn)特性,這使得 Python 程序易于讀和理解。

相關(guān)文章

  • Python切片操作實(shí)例分析

    Python切片操作實(shí)例分析

    這篇文章主要介紹了Python切片操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python切片相關(guān)的正向、反向、步長等使用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • Python3.5以上版本lxml導(dǎo)入etree報(bào)錯(cuò)的解決方案

    Python3.5以上版本lxml導(dǎo)入etree報(bào)錯(cuò)的解決方案

    這篇文章主要介紹了Python3.5以上版本lxml導(dǎo)入etree報(bào)錯(cuò)的解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06
  • 基于Python實(shí)現(xiàn)成語填空游戲的示例代碼

    基于Python實(shí)現(xiàn)成語填空游戲的示例代碼

    成語填空想必大家都是十分熟悉的了,特別是有在上小學(xué)的家長肯定都有十分深刻的印象。當(dāng)然了你也別小看了成語調(diào)控小游戲,有的時(shí)候知識儲備不夠,你還真的不一定猜得出來是什么。本文就來用Python編寫一個(gè)簡單的成語填空游戲,感興趣的可以了解下
    2023-02-02
  • Python3實(shí)戰(zhàn)之爬蟲抓取網(wǎng)易云音樂的熱門評論

    Python3實(shí)戰(zhàn)之爬蟲抓取網(wǎng)易云音樂的熱門評論

    這篇文章主要給大家介紹了關(guān)于Python3實(shí)戰(zhàn)之爬蟲抓取網(wǎng)易云音樂熱評的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • Python為人臉照片添加口罩實(shí)戰(zhàn)

    Python為人臉照片添加口罩實(shí)戰(zhàn)

    本文主要介紹了Python為人臉照片添加口罩實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 新建文件時(shí)Pycharm中自動設(shè)置頭部模板信息的方法

    新建文件時(shí)Pycharm中自動設(shè)置頭部模板信息的方法

    這篇文章主要介紹了新建文件時(shí)Pycharm中自動設(shè)置頭部模板信息的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • PyCharm:method may be static問題及解決

    PyCharm:method may be static問題及解決

    這篇文章主要介紹了PyCharm:method may be static問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 如何基于python實(shí)現(xiàn)不鄰接植花

    如何基于python實(shí)現(xiàn)不鄰接植花

    這篇文章主要介紹了如何基于python實(shí)現(xiàn)不鄰接植花,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • python manim實(shí)現(xiàn)排序算法動畫示例

    python manim實(shí)現(xiàn)排序算法動畫示例

    這篇文章主要為大家介紹了python manim實(shí)現(xiàn)排序算法動畫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • python集合用法實(shí)例分析

    python集合用法實(shí)例分析

    這篇文章主要介紹了python集合用法,較為詳細(xì)的分析了Python中集合的常見用法,需要的朋友可以參考下
    2015-05-05

最新評論