06 一篇离斩,學(xué)會python循環(huán)與分支

《python小白入門系列教程》 專欄 ? 第06篇

Python忠實(shí)地按照它們的順序執(zhí)行它們磅叛。

如果你想要改變語句流的執(zhí)行順序,該怎么辦呢皆辽?

你可能已經(jīng)猜到了柑蛇,這是通過控制流語句實(shí)現(xiàn)的。

在Python中有三種控制流語句——if驱闷、for和while耻台。

if語句

if語句用來檢驗(yàn)一個(gè)條件, 如果 條件為真(True)空另,我們運(yùn)行一塊語句(稱為 if-塊 )

否則 我們處理另外一塊語句(稱為 else-塊 )盆耽。else 從句是可選的。

age = 20
if age >18:
     print("成年人")
else :
     print("未成年")
# "未成年"

程序中我們判斷age的值是否大于18 如果大于輸出"成年人" 否則輸出 "未成年"

注意:

18后面有個(gè)冒號

print("成年人") 前面有縮進(jìn)4個(gè)空格 稱為if-塊

可以通過下圖來簡單了解條件語句的執(zhí)行過程:

[圖片上傳失敗...(image-c738d6-1601214613080)]

使用多重if

在這個(gè)程序中扼菠,我們從用戶處得到猜測的數(shù)摄杂,然后檢驗(yàn)這個(gè)數(shù)是否是我們手中的那個(gè)。我們把變量number設(shè)置為我們想要的任何整數(shù)循榆,在這個(gè)例子中是28析恢。然后,我們使用input()函數(shù)取得用戶猜測的數(shù)字秧饮。

案例

number = 28
guess = int(input('請輸入數(shù)字:'))
if guess==number: 
    print('恭喜您猜中了')  
    print('不是每一次您都能猜中')
elif guess <number: 
    print('您猜的數(shù)有點(diǎn)小了')
else:
    print("您猜的大了點(diǎn)")
?
print("猜數(shù)完成")
# 當(dāng)if條件執(zhí)行完這句話執(zhí)行

輸出:

請輸入一個(gè)數(shù)字:50
您猜的大了點(diǎn)
猜數(shù)完成
?
請輸入一個(gè)數(shù)字:22
您猜的數(shù)有點(diǎn)小了
猜數(shù)完成
?
請輸入一個(gè)數(shù)字:28
恭喜您猜中了
不是每一次您都能猜中
猜數(shù)完成
?

注意if語句在結(jié)尾處包含一個(gè)冒號——我們通過它告訴Python下面跟著一個(gè)語句塊映挂。

記住,elif和else部分是可選的盗尸。

在Python執(zhí)行完一個(gè)完整的if語句以及與它相關(guān)聯(lián)的elif和else從句之后柑船,它移向if語句塊的下一個(gè)語句。在這個(gè)例子中泼各,這個(gè)語句塊是主塊鞍时。

程序從主塊開始執(zhí)行,而下一個(gè)語句是print ('猜數(shù)完成')語句扣蜻。在這之后寸癌,Python看到程序的結(jié)尾,簡單的結(jié)束運(yùn)行弱贼。

可以通過下圖來簡單了解條件語句的執(zhí)行過程:

[圖片上傳失敗...(image-958b70-1601214613080)]

以下為if中常用的操作運(yùn)算符:

| 操作符 | 描述 |
| < | 小于 |
| <= | 小于或等于 |
| > | 大于 |
| >= | 大于或等于 |
| == | 等于,比較兩個(gè)值是否相等 |
| != | 不等于 |

while語句

只要在一個(gè)條件為真的情況下磷蛹,while語句允許你重復(fù)執(zhí)行一塊語句吮旅。while語句是所謂 循環(huán) 語句的一個(gè)例子。while語句有一個(gè)可選的else從句。

使用while語句

while running:
    guess = int(input('請輸入一個(gè)數(shù)字 : '))
    if guess == number:
        print('恭喜你猜到了') 
        running = False # 讓while循環(huán)停止
    elif guess < number:
        print('小了點(diǎn)')
    else:
         print('大了點(diǎn)') 
else:
     print('循環(huán)結(jié)束') 

輸出

請輸入一個(gè)數(shù)字:50
大了點(diǎn) 
?
請輸入一個(gè)數(shù)字:22
小了點(diǎn) 
?
請輸入一個(gè)數(shù)字:28
恭喜你猜到了

在這個(gè)程序中庇勃,我們?nèi)匀皇褂昧瞬聰?shù)游戲作為例子檬嘀,但是這個(gè)例子的優(yōu)勢在于用戶可以不斷的猜數(shù),直到他猜對為止——這樣就不需要像前面那個(gè)例子那樣為每次猜測重復(fù)執(zhí)行一遍程序责嚷。這個(gè)例子恰當(dāng)?shù)卣f明了while語句的使用

我們把input和if語句移到了while循環(huán)內(nèi)鸳兽,并且在while循環(huán)開始前把running變量設(shè)置為True。首先罕拂,我們檢驗(yàn)變量running是否為True揍异,然后執(zhí)行后面的 while-塊 。在執(zhí)行了這塊程序之后爆班,再次檢驗(yàn)條件衷掷,在這個(gè)例子中,條件是running變量柿菩。

如果它是真的戚嗅,我們再次執(zhí)行while-塊,否則枢舶,我們繼續(xù)執(zhí)行可選的else-塊懦胞,并接著執(zhí)行下一個(gè)語句。

當(dāng)while循環(huán)條件變?yōu)镕alse的時(shí)候凉泄,else塊才被執(zhí)行——這甚至也可能是在條件第一次被檢驗(yàn)的時(shí)候躏尉。如果while循環(huán)有一個(gè)else從句,它將始終被執(zhí)行旧困,除非你的while循環(huán)將永遠(yuǎn)循環(huán)下去不會結(jié)束

True和False被稱為布爾類型醇份。你可以分別把它們等效地理解為值1和0。在檢驗(yàn)重要條件的時(shí)候吼具,布爾類型十分重要僚纷,它們并不是真實(shí)的值

else塊事實(shí)上是多余的,因?yàn)槟憧梢园哑渲械恼Z句放在同一塊(與while相同)中拗盒,跟在while語句之后怖竭,這樣可以取得相同的效果。

for循環(huán)

for..in是另外一個(gè)循環(huán)語句陡蝇,它在一序列的對象上 遞歸 即逐一使用隊(duì)列中的每個(gè)項(xiàng)目痊臭。

使用for語句

案例:

for i in range(1, 5): 
    print(i) 
else:
    print('循環(huán)結(jié)束')

輸出:

1

在這個(gè)程序中,我們打印了一個(gè) 序列 的數(shù)登夫。我們使用內(nèi)建的range函數(shù)生成這個(gè)數(shù)的序列广匙。

我們所做的只是提供兩個(gè)數(shù),range返回一個(gè)序列的數(shù)恼策。這個(gè)序列從第一個(gè)數(shù)開始到第二個(gè)數(shù)為止鸦致。例如,range(1,5)給出序列[1, 2, 3, 4]。默認(rèn)地分唾,range的步長為1抗碰。如果我們?yōu)閞ange提供第三個(gè)數(shù),那么它將成為步長绽乔。

例如弧蝇,range(1,5,2)給出[1,3]。記住折砸,range 向上 延伸到第二個(gè)數(shù)看疗,即它不包含第二個(gè)數(shù)

for循環(huán)在這個(gè)范圍內(nèi)遞歸——for i in range(1,5)等價(jià)于for i in [1, 2, 3, 4],這就如同把序列中的每個(gè)數(shù)(或?qū)ο螅┵x值給i鞍爱,一次一個(gè)鹃觉,然后以每個(gè)i的值執(zhí)行這個(gè)程序塊。在這個(gè)例子中睹逃,我們只是打印i的值盗扇。

記住,else部分是可選的沉填。如果包含else疗隶,它總是在for循環(huán)結(jié)束后執(zhí)行一次,除非遇到break語句

break語句

reak語句是用來 終止 循環(huán)語句的翼闹,即哪怕循環(huán)條件沒有稱為False或序列還沒有被完全遞歸斑鼻,也停止執(zhí)行循環(huán)語句。

一個(gè)重要的注釋是猎荠,如果你從for或while循環(huán)中 終止 坚弱,任何對應(yīng)的循環(huán)else塊將不執(zhí)行。

案例:

while True:
    s = input('輸入字符串 : ') 
    if s == 'quit': 
        break 
    print ('字符串的長度是', len(s))
print '循環(huán)結(jié)束'

輸出:

輸入字符串 : I

在這個(gè)程序中关摇,我們反復(fù)地取得用戶地輸入荒叶,然后打印每次輸入地長度。我們提供了一個(gè)特別的條件來停止程序输虱,即檢驗(yàn)用戶的輸入是否是'quit'些楣。通過 終止 循環(huán)到達(dá)程序結(jié)尾來停止程序。

輸入字符串的長度通過內(nèi)建的len函數(shù)取得

continue語句

continue語句被用來告訴Python跳過當(dāng)前循環(huán)塊中的剩余語句宪睹,然后 繼續(xù) 進(jìn)行下一輪循環(huán)愁茁。

案例:

while True: 
    s = input('輸入字符串 : ') 
    if s == 'quit': 
        break 
    if len(s) < 3: 
        print('太短了') 
        continue 
    print('驗(yàn)證通過') 
print('循環(huán)結(jié)束') 
# 自此處起繼續(xù)進(jìn)行其它任何處理

輸出:

輸入字符串 : I

在這個(gè)程序中,我們從用戶處取得輸入亭病,但是我們僅僅當(dāng)它們有至少3個(gè)字符長的時(shí)候才處理它們鹅很。所以,我們使用內(nèi)建的len函數(shù)來取得長度罪帖。如果長度小于3促煮,我們將使用continue語句忽略塊中的剩余的語句食听。否則,這個(gè)循環(huán)中的剩余語句將被執(zhí)行污茵,我們可以在這里做我們希望的任何處理。

while循環(huán)圖解

image

IT入門 感謝關(guān)注

練習(xí)地址:www.520mg.com/it

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末葬项,一起剝皮案震驚了整個(gè)濱河市泞当,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌民珍,老刑警劉巖襟士,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嚷量,居然都是意外死亡陋桂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門蝶溶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗜历,“玉大人,你說我怎么就攤上這事抖所±嬷荩” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵田轧,是天一觀的道長暴匠。 經(jīng)常有香客問我,道長傻粘,這世上最難降的妖魔是什么每窖? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮弦悉,結(jié)果婚禮上窒典,老公的妹妹穿的比我還像新娘。我一直安慰自己警绩,他們只是感情好崇败,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肩祥,像睡著了一般后室。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上混狠,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天岸霹,我揣著相機(jī)與錄音,去河邊找鬼将饺。 笑死贡避,一個(gè)胖子當(dāng)著我的面吹牛痛黎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刮吧,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼湖饱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了杀捻?” 一聲冷哼從身側(cè)響起井厌,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎致讥,沒想到半個(gè)月后仅仆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡垢袱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年墓拜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片请契。...
    茶點(diǎn)故事閱讀 40,561評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咳榜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出姚糊,到底是詐尸還是另有隱情贿衍,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布救恨,位于F島的核電站贸辈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏肠槽。R本人自食惡果不足惜擎淤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望秸仙。 院中可真熱鬧嘴拢,春花似錦、人聲如沸寂纪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捞蛋。三九已至孝冒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拟杉,已是汗流浹背庄涡。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搬设,地道東北人穴店。 一個(gè)月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓撕捍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親泣洞。 傳聞我的和親對象是個(gè)殘疾皇子忧风,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評論 2 359