Python忠實地按照它們的順序執(zhí)行它們讽膏。
如果你想要改變語句流的執(zhí)行順序菱魔,該怎么辦呢?
你可能已經(jīng)猜到了蝇棉,這是通過控制流語句實現(xiàn)的讨阻。
在Python中有三種控制流語句——if、for和while篡殷。
如果大家在學(xué)習(xí)中遇到困難钝吮,想找一個python學(xué)習(xí)交流環(huán)境,可以加入我們的python圈板辽,裙號947618024奇瘦,可領(lǐng)取python學(xué)習(xí)資料,會節(jié)約很多時間劲弦,減少很多遇到的難題耳标。
if語句
if語句用來檢驗一個條件, 如果 條件為真(True)邑跪,我們運行一塊語句(稱為 if-塊 )
否則 我們處理另外一塊語句(稱為 else-塊 )次坡。else 從句是可選的。
age =20if age >18:print("成年人")else:print("未成年")#"未成年"
程序中我們判斷age的值是否大于18 如果大于輸出"成年人" 否則輸出 "未成年"
注意:
18后面有個冒號
print("成年人") 前面有縮進4個空格 稱為if-塊
可以通過下圖來簡單了解條件語句的執(zhí)行過程:
使用多重if
在這個程序中画畅,我們從用戶處得到猜測的數(shù)砸琅,然后檢驗這個數(shù)是否是我們手中的那個。我們把變量number設(shè)置為我們想要的任何整數(shù)夜赵,在這個例子中是28。然后乡革,我們使用input()函數(shù)取得用戶猜測的數(shù)字寇僧。
案例
number = 28guess?=?int(input('請輸入數(shù)字:'))ifguess==number:print('恭喜您猜中了')print('不是每一次您都能猜中')elifguess
輸出:
請輸入一個數(shù)字:50您猜的大了點猜數(shù)完成請輸入一個數(shù)字:22您猜的數(shù)有點小了猜數(shù)完成?請輸入一個數(shù)字:28恭喜您猜中了不是每一次您都能猜中猜數(shù)完成
?
注意if語句在結(jié)尾處包含一個冒號——我們通過它告訴Python下面跟著一個語句塊摊腋。
記住,elif和else部分是可選的嘁傀。
在Python執(zhí)行完一個完整的if語句以及與它相關(guān)聯(lián)的elif和else從句之后兴蒸,它移向if語句塊的下一個語句。在這個例子中细办,這個語句塊是主塊橙凳。
程序從主塊開始執(zhí)行,而下一個語句是print ('猜數(shù)完成')語句笑撞。在這之后岛啸,Python看到程序的結(jié)尾,簡單的結(jié)束運行茴肥。
可以通過下圖來簡單了解條件語句的執(zhí)行過程:
以下為if中常用的操作運算符:
操作符描述<小于<=小于或等于>大于>=大于或等于==等于坚踩,比較兩個值是否相等!=不等于
while語句
只要在一個條件為真的情況下,while語句允許你重復(fù)執(zhí)行一塊語句瓤狐。while語句是所謂 循環(huán) 語句的一個例子瞬铸。while語句有一個可選的else從句。
使用while語句
whilerunning:????guess?=?int(input('請輸入一個數(shù)字?:?'))ifguess == number:print('恭喜你猜到了')running= False # 讓while循環(huán)停止? ? elif guess < number:print('小了點')else:print('大了點')else:print('循環(huán)結(jié)束')
輸出
請輸入一個數(shù)字:50大了點??請輸入一個數(shù)字:22小了點??請輸入一個數(shù)字:28恭喜你猜到了 循環(huán)結(jié)束?
在這個程序中础锐,我們?nèi)匀皇褂昧瞬聰?shù)游戲作為例子嗓节,但是這個例子的優(yōu)勢在于用戶可以不斷的猜數(shù),直到他猜對為止——這樣就不需要像前面那個例子那樣為每次猜測重復(fù)執(zhí)行一遍程序皆警。這個例子恰當?shù)卣f明了while語句的使用
我們把input和if語句移到了while循環(huán)內(nèi)拦宣,并且在while循環(huán)開始前把running變量設(shè)置為True。首先耀怜,我們檢驗變量running是否為True恢着,然后執(zhí)行后面的 while-塊 。在執(zhí)行了這塊程序之后财破,再次檢驗條件掰派,在這個例子中,條件是running變量左痢。
如果它是真的靡羡,我們再次執(zhí)行while-塊,否則俊性,我們繼續(xù)執(zhí)行可選的else-塊略步,并接著執(zhí)行下一個語句。
當while循環(huán)條件變?yōu)镕alse的時候定页,else塊才被執(zhí)行——這甚至也可能是在條件第一次被檢驗的時候趟薄。如果while循環(huán)有一個else從句,它將始終被執(zhí)行典徊,除非你的while循環(huán)將永遠循環(huán)下去不會結(jié)束
True和False被稱為布爾類型杭煎。你可以分別把它們等效地理解為值1和0恩够。在檢驗重要條件的時候,布爾類型十分重要羡铲,它們并不是真實的值
else塊事實上是多余的蜂桶,因為你可以把其中的語句放在同一塊(與while相同)中,跟在while語句之后也切,這樣可以取得相同的效果扑媚。
for循環(huán)
for..in是另外一個循環(huán)語句,它在一序列的對象上 遞歸 即逐一使用隊列中的每個項目雷恃。
使用for語句
案例:
fori inrange(1,5):print(i)else:print('循環(huán)結(jié)束')
輸出:
1234循環(huán)結(jié)束
在這個程序中疆股,我們打印了一個 序列 的數(shù)。我們使用內(nèi)建的range函數(shù)生成這個數(shù)的序列褂萧。
我們所做的只是提供兩個數(shù)押桃,range返回一個序列的數(shù)。這個序列從第一個數(shù)開始到第二個數(shù)為止导犹。例如唱凯,range(1,5)給出序列[1, 2, 3, 4]。默認地谎痢,range的步長為1磕昼。如果我們?yōu)閞ange提供第三個數(shù),那么它將成為步長节猿。
例如票从,range(1,5,2)給出[1,3]。記住滨嘱,range 向上 延伸到第二個數(shù)峰鄙,即它不包含第二個數(shù)
for循環(huán)在這個范圍內(nèi)遞歸——for i in range(1,5)等價于for i in [1, 2, 3, 4],這就如同把序列中的每個數(shù)(或?qū)ο螅┵x值給i太雨,一次一個吟榴,然后以每個i的值執(zhí)行這個程序塊。在這個例子中囊扳,我們只是打印i的值吩翻。
記住,else部分是可選的锥咸。如果包含else狭瞎,它總是在for循環(huán)結(jié)束后執(zhí)行一次,除非遇到break語句
break語句
reak語句是用來 終止 循環(huán)語句的搏予,即哪怕循環(huán)條件沒有稱為False或序列還沒有被完全遞歸熊锭,也停止執(zhí)行循環(huán)語句。
一個重要的注釋是,如果你從for或while循環(huán)中 終止 碗殷,任何對應(yīng)的循環(huán)else塊將不執(zhí)行劣针。
案例:
whileTrue:????s?=input('輸入字符串?:?')ifs?=='quit':breakprint('字符串的長度是',len(s))print'循環(huán)結(jié)束'
輸出:
輸入字符串:I字符串的長度是1?輸入字符串:Love字符串的長度是4?輸入字符串:You字符串的長度是3?輸入字符串:quit循環(huán)結(jié)束
在這個程序中,我們反復(fù)地取得用戶地輸入亿扁,然后打印每次輸入地長度。我們提供了一個特別的條件來停止程序鸟廓,即檢驗用戶的輸入是否是'quit'从祝。通過 終止 循環(huán)到達程序結(jié)尾來停止程序。
輸入字符串的長度通過內(nèi)建的len函數(shù)取得
continue語句
continue語句被用來告訴Python跳過當前循環(huán)塊中的剩余語句引谜,然后 繼續(xù) 進行下一輪循環(huán)牍陌。
案例:
whileTrue:? ? s = input('輸入字符串 : ')ifs =='quit':breakiflen(s)?<3:print('太短了')continueprint('驗證通過')print('循環(huán)結(jié)束')#?自此處起繼續(xù)進行其它任何處理
輸出:
輸入字符串 : I太短了?輸入字符串 : Love驗證通過?輸入字符串 : You驗證通過?輸入字符串 : quit循環(huán)結(jié)束
在這個程序中,我們從用戶處取得輸入员咽,但是我們僅僅當它們有至少3個字符長的時候才處理它們毒涧。所以,我們使用內(nèi)建的len函數(shù)來取得長度贝室。如果長度小于3契讲,我們將使用continue語句忽略塊中的剩余的語句。否則滑频,這個循環(huán)中的剩余語句將被執(zhí)行捡偏,我們可以在這里做我們希望的任何處理。
while循環(huán)圖解
最后多說一句峡迷,想學(xué)習(xí)Python可聯(lián)系小編银伟,這里有我自己整理的整套python學(xué)習(xí)資料和路線,想要這些資料的都可以進q裙947618024領(lǐng)取绘搞。
本文章素材來源于網(wǎng)絡(luò)彤避,如有侵權(quán)請聯(lián)系刪除。