《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)圖解
IT入門 感謝關(guān)注
練習(xí)地址:www.520mg.com/it