Python 簡(jiǎn)明教程 --- 6,Python 控制流

Talk is cheap, show me the code.
—— Linus Torvalds

目錄

控制流用來(lái)控制程序的處理流程,即當(dāng)程序滿(mǎn)足或不滿(mǎn)足某一條件時(shí)案怯,讓程序去做哪些事情。

控制流語(yǔ)句使得我們可以處理豐富的代碼邏輯澎办。

基本的控制流語(yǔ)句有三種嘲碱,分別是:

  • if 條件語(yǔ)句
  • for 循環(huán)語(yǔ)句
  • while 循環(huán)語(yǔ)句

1,if 條件語(yǔ)句

if 語(yǔ)句用于判斷一個(gè)條件局蚀,當(dāng)條件為True 時(shí)麦锯,執(zhí)行一段代碼,當(dāng)條件為False 時(shí)琅绅,執(zhí)行另一段代碼扶欣。

if 語(yǔ)句有三種結(jié)構(gòu):

  • 沒(méi)有分支
  • 一個(gè)分支
  • 多個(gè)分支

分支內(nèi)要執(zhí)行的語(yǔ)句,需要有縮進(jìn)千扶,每個(gè)條件后邊要有冒號(hào):宵蛀,如下:

# 沒(méi)有分支
if 條件:
    # 條件為T(mén)rue 時(shí)要執(zhí)行的語(yǔ)句
    ...

# 一個(gè)分支
if 條件:
    # 條件為T(mén)rue 時(shí)要執(zhí)行的語(yǔ)句
    ...
else:
    # 條件為False 時(shí)要執(zhí)行的語(yǔ)句
    ...

# 多個(gè)分支
if 條件1:
    # 條件1 為T(mén)rue 時(shí)要執(zhí)行的語(yǔ)句
    ...
elif 條件2:
    # 條件2 為T(mén)rue 時(shí)要執(zhí)行的語(yǔ)句
    ...
elif 條件3:
    # 條件3 為T(mén)rue 時(shí)要執(zhí)行的語(yǔ)句
    ...
else:
   # 條件1,條件2县貌,條件3 都為False 時(shí)要執(zhí)行的語(yǔ)句
    ...

多分支語(yǔ)句時(shí)术陶,如果有多個(gè)條件都為True,則只會(huì)執(zhí)行第一個(gè)條件為True 內(nèi)的語(yǔ)句煤痕,其它條件為True 內(nèi)的語(yǔ)句不會(huì)執(zhí)行梧宫。

比如上面的多分支if 語(yǔ)句中:

  • 如果條件1條件2摆碉,條件3都為True塘匣,則只會(huì)執(zhí)行條件1 內(nèi)的語(yǔ)句。
  • 如果條件1False巷帝,條件2忌卤,條件3都為True,則只會(huì)執(zhí)行條件2 內(nèi)的語(yǔ)句楞泼。

if 語(yǔ)句后邊的條件驰徊,可帶括號(hào)(),可不帶括號(hào)()堕阔,如下是帶括號(hào)的:

# 帶括號(hào)的if 語(yǔ)句
if (條件):
    ...

if 語(yǔ)句嵌套

if 語(yǔ)句中還可以嵌套if 語(yǔ)句棍厂,下面是一個(gè)簡(jiǎn)單的if 嵌套語(yǔ)句結(jié)構(gòu):

if 條件1:
    ...
    if 條件2:
       ...
       
    ...

示例,根據(jù)分?jǐn)?shù)判斷等級(jí)

scores = ...    # 分?jǐn)?shù)
grade = None    # 等級(jí)

if scores > 90:
    # 分?jǐn)?shù)大于90 時(shí)超陆,等級(jí)為優(yōu)秀
    grade = '優(yōu)秀'
    
elif scores > 80:
    # 分?jǐn)?shù)大于80 時(shí)牺弹,等級(jí)為良好
    grade = '良好'
    
elif scores > 60:
    # 分?jǐn)?shù)大于60 時(shí),等級(jí)為及格
    grade = '及格'
    
else:
    # 否則,等級(jí)為不及格
    grade = '不及格'

2张漂,for 循環(huán)語(yǔ)句

Python 中的for 循環(huán)不同于C/C++晶默,Java 中的for 循環(huán)。

Python 中的for 語(yǔ)句實(shí)際上是for...in 語(yǔ)句航攒,通常用于遍歷一個(gè)序列荤胁,序列后邊要有一個(gè)冒號(hào):

說(shuō)明:
一個(gè)字符串屎债,一個(gè)列表,都是一個(gè)序列垢油。
字符串列表盆驹,在后續(xù)章節(jié)會(huì)詳細(xì)介紹。

遍歷列表:

# l 是一個(gè)列表
l = [1, 2, 3]

# 遍歷列表
for i in l: 
    # i 是列表中的每個(gè)元素
    print(i)

其輸出結(jié)果為:

1
2
3

遍歷字符串:

# s 是一個(gè)字符串
s = 'abc'

# 遍歷字符串中的字符
for i in s:
    print(i)

其輸出結(jié)果為:

a
b
c

for 循環(huán)中的else

for 循環(huán)中也可以有一個(gè)else 語(yǔ)句滩愁,在for 循環(huán)執(zhí)行完之后躯喇,會(huì)在最后執(zhí)行else 語(yǔ)句:

# l 是一個(gè)列表
l = [1, 2, 3]

# 遍歷列表
for i in l: 
    # i 是列表中的每個(gè)元素
    print(i)
else:
    print('for 循環(huán)執(zhí)行結(jié)束')

其輸出結(jié)果如下:

1
2
3
for 循環(huán)執(zhí)行結(jié)束

當(dāng) for 循環(huán)的執(zhí)行過(guò)程中遇到break 語(yǔ)句,else 語(yǔ)句則不會(huì)被執(zhí)行:

l = [1, 2, 3]
for i in l:
    print(i)

    if i == 3: 
        # 當(dāng)i 為3 時(shí)硝枉,會(huì)執(zhí)行 break
        break
else:
    print('for 循環(huán)執(zhí)行結(jié)束')

該段代碼在執(zhí)行到i3 時(shí)廉丽,會(huì)執(zhí)行到break 語(yǔ)句,break 語(yǔ)句會(huì)跳出for 循環(huán)妻味,else 語(yǔ)句也是for 循環(huán)的一部分正压,所以,else 中的語(yǔ)句不會(huì)被執(zhí)行到责球。

其輸出結(jié)果如下:

1
2
3

注意:break 語(yǔ)句會(huì)在下面介紹到焦履。

3,while 循環(huán)語(yǔ)句

下面是while 循環(huán)語(yǔ)句的語(yǔ)法格式雏逾,條件后邊有一個(gè)冒號(hào):嘉裤,如下:

while 條件:
    # 條件為T(mén)rue 時(shí)要執(zhí)行的語(yǔ)句
    ...
    ...

while 語(yǔ)句的含義是,當(dāng)條件True 時(shí)栖博,會(huì)一直執(zhí)行while 循環(huán)中的代碼屑宠,直到某一時(shí)刻條件變?yōu)榱?code>False。

每次在執(zhí)行while 循環(huán)體內(nèi)的語(yǔ)句塊之前仇让,都會(huì)判斷條件典奉,如果條件True,則執(zhí)行循環(huán)體丧叽,如果條件False秋柄,則退出循環(huán)體。

示例:

i = 3
while i > 0:
   print(i)
   i = i - 1

這段代碼的輸出結(jié)果為:

3
2
1

當(dāng)i 減到0 時(shí)蠢正,i > 0False骇笔,此時(shí)while 循環(huán)結(jié)束。

while 循環(huán)中else

while 循環(huán)也與for 循環(huán)一樣,可以有else 語(yǔ)句:

while 條件:
    ...
else:
    ...

無(wú)限循環(huán)

無(wú)限循環(huán)是一個(gè)特殊的循環(huán)笨触,其條件永遠(yuǎn)為懦傍,如下就是一個(gè)無(wú)限循環(huán):

while True:
    ...
    ...

只要無(wú)限循環(huán)中的語(yǔ)句沒(méi)有主動(dòng)退出,或者遇到異常芦劣,則無(wú)限循環(huán)中的語(yǔ)句將永遠(yuǎn)執(zhí)行下去粗俱。

4,continue 語(yǔ)句

continue 語(yǔ)句用在for 循環(huán)和while 循環(huán)中虚吟,當(dāng)遇到continue 語(yǔ)句時(shí)寸认,會(huì)跳到循環(huán)的開(kāi)頭執(zhí)行。

示例:

i = 3
while i > 0:
    i = i - 1

    if i == 2:
        print('跳到循環(huán)開(kāi)頭')
        continue
            
    print(i)

其輸出如下:

跳到循環(huán)開(kāi)頭
1
0

當(dāng)i == 2 時(shí)串慰,執(zhí)行完print('跳到循環(huán)開(kāi)頭') 后偏塞,執(zhí)行continue 語(yǔ)句,然后跳到循環(huán)開(kāi)頭執(zhí)行邦鲫,所以灸叼,i == 2 時(shí),沒(méi)有執(zhí)行print(i)庆捺。

5古今,break 語(yǔ)句

break 語(yǔ)句也是用在for 循環(huán)和while 循環(huán)中,當(dāng)遇到break 語(yǔ)句時(shí)滔以,會(huì)跳出循環(huán)體捉腥。

示例:

i = 3
while i > 0:
    i = i - 1

    if i == 0:
        print('跳出循環(huán)')
        break
            
    print(i)

其輸出結(jié)果如下:

2
1
跳出循環(huán)

當(dāng)i == 0 時(shí),執(zhí)行完print('跳出循環(huán)') 后你画,執(zhí)行break 語(yǔ)句但狭,然后跳出循環(huán),所以撬即,i == 0 時(shí)立磁,沒(méi)有執(zhí)行print(i)

6剥槐,pass 語(yǔ)句

pass 語(yǔ)句經(jīng)常在控制流中用到唱歧,pass 語(yǔ)句是一個(gè)空語(yǔ)句,不執(zhí)行任何東西粒竖,只起到一個(gè)占位的作用颅崩。

示例:

i = ...
if i == 0:
    # 做任何事情
    pass
else:
    print('i 不為 0')

(完。)


推薦閱讀:

Python 簡(jiǎn)明教程 --- 1蕊苗,搭建Python 環(huán)境
Python 簡(jiǎn)明教程 --- 2沿后,第一個(gè)Python 程序
Python 簡(jiǎn)明教程 --- 3,Python 基礎(chǔ)概念
Python 簡(jiǎn)明教程 --- 4朽砰,Python 變量與基本數(shù)據(jù)類(lèi)型
Python 簡(jiǎn)明教程 --- 5尖滚,Python 表達(dá)式與運(yùn)算符

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末喉刘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子漆弄,更是在濱河造成了極大的恐慌睦裳,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撼唾,死亡現(xiàn)場(chǎng)離奇詭異廉邑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)倒谷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)蛛蒙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人渤愁,你說(shuō)我怎么就攤上這事牵祟。” “怎么了猴伶?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)塌西。 經(jīng)常有香客問(wèn)我他挎,道長(zhǎng),這世上最難降的妖魔是什么捡需? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任办桨,我火速辦了婚禮,結(jié)果婚禮上站辉,老公的妹妹穿的比我還像新娘呢撞。我一直安慰自己,他們只是感情好饰剥,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布殊霞。 她就那樣靜靜地躺著,像睡著了一般汰蓉。 火紅的嫁衣襯著肌膚如雪绷蹲。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天顾孽,我揣著相機(jī)與錄音祝钢,去河邊找鬼。 笑死若厚,一個(gè)胖子當(dāng)著我的面吹牛拦英,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播测秸,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼疤估,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼灾常!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起做裙,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤岗憋,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后锚贱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體仔戈,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年拧廊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了监徘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吧碾,死狀恐怖凰盔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情倦春,我是刑警寧澤户敬,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站睁本,受9級(jí)特大地震影響尿庐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜呢堰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一抄瑟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧枉疼,春花似錦皮假、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至航闺,卻和暖如春布轿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背来颤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工汰扭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人福铅。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓萝毛,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親滑黔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子笆包,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容