11、Python流程控制

一爵卒、什么是流程控制

在進(jìn)行程序設(shè)計(jì)的時(shí)候虚缎,我們會(huì)經(jīng)常進(jìn)行邏輯判斷,根據(jù)不同的結(jié)果做不同的事钓株,或者重復(fù)做某件事实牡,我們對(duì)類似這樣的工作稱為流程控制

二、分類

  1. 順序控制

    就是從左到右,從上到下的順序依次執(zhí)行每條語(yǔ)句操作

  2. 條件控制(選擇控制)

    基于條件選擇執(zhí)行語(yǔ)句享幽,比方說(shuō)铲掐,如果條件成立,則執(zhí)行操作A值桩,或者如果條件成立摆霉,則執(zhí)行操作A,反之則執(zhí)行操作B

  3. 循環(huán)控制

    循環(huán)控制,又稱為回路控制携栋,根據(jù)循環(huán)初始條件和終結(jié)要求搭盾,執(zhí)行循環(huán)體內(nèi)的操作

三、選擇控制 if語(yǔ)句(決策)

1婉支、if(單一條件))

  1. 語(yǔ)法格式
    if <條件表達(dá)式>:
       #若干語(yǔ)句塊
    
  2. 執(zhí)行流程圖


    image
  3. 說(shuō)明
    • 條件表達(dá)式可以是任何一種邏輯表達(dá)式
    • 如果表達(dá)式值為true鸯隅,則執(zhí)行 : 后的代碼,再執(zhí)行后面的語(yǔ)句
    • 如果表達(dá)的值為false向挖,則直接執(zhí)行后面的語(yǔ)句
  4. 示例代碼
    #假設(shè)有整型變量x蝌以,判斷x是否為偶數(shù),若為偶數(shù)何之,則在控制臺(tái)上打印“輸入的數(shù)值是偶數(shù)”跟畅。
    #無(wú)論x是否為偶數(shù),最后都要在控制臺(tái)上輸出x的值
    

2溶推、if...else..

  1. 語(yǔ)法格式
    if <條件1>:
      執(zhí)行語(yǔ)句塊1
    else:
      執(zhí)行語(yǔ)句塊2
    
  2. 說(shuō)明
    • else子句是可選項(xiàng)
    • 若有,則布爾表達(dá)式的值為true,執(zhí)行語(yǔ)句1徊件,否則,執(zhí)行語(yǔ)句2
    • 若無(wú),則布爾表達(dá)式的值為true,執(zhí)行語(yǔ)句1蒜危,否則虱痕,執(zhí)行if語(yǔ)句的后續(xù)語(yǔ)句
    • 語(yǔ)句1或語(yǔ)句2可以是單語(yǔ)句,也可以是復(fù)合語(yǔ)句等
  3. 執(zhí)行流程圖


    image
  4. 示例代碼
    x = 2;
    if x<2:
       x +=1
    else:
       x -=1
    

3辐赞、if...elif…else...

  1. 語(yǔ)法格式
    if <條件1>:
      <語(yǔ)句1>
    elif <條件2>:
      <語(yǔ)句2>
    elif <條件3>:
      <語(yǔ)句3>
    ...
    else:
      <語(yǔ)句n>
    
  2. 執(zhí)行結(jié)構(gòu)圖


    image
  3. 說(shuō)明
    • 如果"條件1"為 True部翘,將執(zhí)行"語(yǔ)句1"
    • 如果"條件1"為False,將判斷"條件2"
    • 如果"條件2"為 True响委,將執(zhí)行"語(yǔ)句2"
    • 如果"條件2"為False略就,將執(zhí)行"條件3",依次內(nèi)推
    • ...
    • 如果所有條件都不滿足則執(zhí)行else語(yǔ)句塊
  4. 示例代碼
    name = input('請(qǐng)輸入用戶名:\n')
    if name == "admin":
        print("超級(jí)管理員")
    elif name == "user":
        print("普通用戶")
    elif name == "guest":
        print("客人")
    else:
        print("黑名單"
    

4晃酒、if 嵌套

  1. 語(yǔ)法格式
    if 表達(dá)式1:
        語(yǔ)句
        if 表達(dá)式2:
            語(yǔ)句
        elif 表達(dá)式3:
            語(yǔ)句
        else
            語(yǔ)句
    elif 表達(dá)式4:
        語(yǔ)句
    else:
        語(yǔ)句
    
  2. 示例代碼
    num = int(input("輸入一個(gè)數(shù)字:"))
    if num % 2 == 0:
            if num % 3 == 0:
                    print('輸入的數(shù)字既能整除2也能整除3')
            else:
                    print('輸入的數(shù)字只能整除2,不能整除3')
    else:
            if num % 3 ==  0:
                    print('輸入的數(shù)字只能整除3窄绒,不能整除2')
            else:
                    print('輸入的數(shù)字既不能整除3贝次,也不能整除2')
    

5、三元操作符

在python中沒(méi)有傳統(tǒng)的?:運(yùn)算符彰导,但有相應(yīng)的處理方式

  1. 語(yǔ)法格式
    variable = a if exper else b
    variable = (exper and [b] or [c])[0]
    variable = exper and b or c
    
  2. 示例代碼
    num1 = int(input('請(qǐng)輸入第一個(gè)數(shù)字:'))
    num2 = int(input('請(qǐng)輸入第二個(gè)數(shù)字:'))
    num3 = int(input('請(qǐng)輸入第三個(gè)數(shù)字:'))
    max_num = 0
    max_num = num1 if num1 > num2 else num2
    max_num = num3 if num3 > max_num else max_num
    print(max_num)
    a,b=1,2  
    max = (a > b and [a] or [b])[0] #list  
    max = (a > b and a or b)  
    

6蛔翅、常用的操作符

操作符 描述
< 小于
<= 小于或等于
> 大于
>= 大于或等于
== 等于,比較對(duì)象是否相等
!= 不等于
and

四位谋、循環(huán) while

1山析、說(shuō)明

Python 編程中 while 語(yǔ)句用于循環(huán)執(zhí)行程序,即在某條件下掏父,循環(huán)執(zhí)行某段程序笋轨,以處理需要重復(fù)處理的相同任務(wù)

2、語(yǔ)法格式

while 條件:  
   #執(zhí)行語(yǔ)句
    ...
[else:
 #執(zhí)行語(yǔ)句
 ...]
image

3、執(zhí)行流程圖

image

4爵政、說(shuō)明

  1. 判斷條件可以是任何表達(dá)式仅讽,任何非零、或非空(null)的值均為true钾挟。
  2. 執(zhí)行流程:先判斷 while 后的條件洁灵,如果是 True 則開(kāi)始執(zhí)行循環(huán)體,執(zhí)行完畢后掺出,再去判斷 條件徽千,如果True 繼續(xù)執(zhí)行循環(huán)體...
  3. while 中的 else 是可選的。這和其他語(yǔ)言的很大的區(qū)別汤锨,其他的語(yǔ)言中 while 中沒(méi)有 else双抽。 當(dāng) while 中的條件為 False 時(shí),開(kāi)始執(zhí)行 else 中語(yǔ)句泥畅。
  4. 如果提供了 else 語(yǔ)句荠诬,則 else 語(yǔ)句一定執(zhí)行。除非你是通過(guò) break 語(yǔ)句退出的循環(huán)位仁。

5柑贞、示例代碼

  1. 輸出小于5的數(shù)
    count = 0
    while count < 5:
       print (count, " 小于 5")
       count = count + 1
    else:
       print (count, " 大于或等于 5")
    
  2. 計(jì)算 1 到 100 的總和
    i = 0
    sun = 0
    while i < 100:
            sun+=i
            i+=1
    print(sun)
    
  3. 猜幸運(yùn)數(shù)字游戲(while 配合if else)
    lucky_num = 10
    input_num = -1
    guess_num = 0
    while lucky_num != input_num and guess_num < 3:
        print('Number:',guess_num)
        input_num = int(input('請(qǐng)輸入一個(gè)數(shù)字:'))
        if input_num > lucky_num:
            print("這個(gè)數(shù)有點(diǎn)大")
        elif input_num < lucky_num:
                  print("這個(gè)數(shù)有點(diǎn)小")
    
        guess_num += 1
        if lucky_num == input_num:
           print('恭喜你')
        else:
           print('在試一次')
    

五、循環(huán) for…in…

1聂抢、說(shuō)明

for循環(huán)常常使用in對(duì)序列化對(duì)象(如列表钧嘶、元祖等)進(jìn)行遍歷

在Python中,最基本的數(shù)據(jù)結(jié)構(gòu)是序列(sequence)琳疏。序列中的每個(gè)元素被分配一個(gè)序號(hào)——即元素的位置有决,也稱為索引。第一個(gè)索引是 0空盼,第二個(gè)則是 1书幕,以此類推。序列中的最后一個(gè)元素標(biāo)記為 -1揽趾,倒數(shù)第二個(gè)元素為 -2台汇,一次類推。Python包含 6 中內(nèi)建的序列篱瞎,包括列表苟呐、元組、字符串俐筋、Unicode字符串牵素、buffer對(duì)象和xrange對(duì)象

2、語(yǔ)法格式

  1. 格式
    for 元素 in 序列: 
        #語(yǔ)句塊
    
    image

3澄者、示例代碼

  1. 基礎(chǔ)使用
    s = 'hello world 666'
    for i in s:
        print(i)
    
  2. 結(jié)合if…else...使用
    for letter in 'laowang':     # 第一個(gè)實(shí)例
       if letter == 'o':         # 字母為 o 時(shí)跳過(guò)輸出
          continue
       print ('當(dāng)前字母 :', letter)
    
  3. 使用rang函數(shù)
    for n in range(2, 10):
        for x in range(2, n):
            if n % x == 0:
                print(n, '等于', x, '*', n//x)
                break
        else:
            # 循環(huán)中沒(méi)有找到元素
            print(n, ' 是質(zhì)數(shù)')
    
    #如果你需要遍歷數(shù)字序列笆呆,可以使用內(nèi)置range()函數(shù)请琳。它會(huì)生成數(shù)列
    range()語(yǔ)法:
    range(start,end,step=1):顧頭不顧尾
    range(10):默認(rèn)step=1,start=0,生成可迭代對(duì)象腰奋,包含[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    range(1,10):指定start=1单起,end=10,默認(rèn)step=1劣坊,生成可迭代對(duì)象嘀倒,包含[1, 2, 3, 4, 5, 6, 7, 8, 9]
    range(1,10,2):指定start=1,end=10局冰,step=2测蘑,生成可迭代對(duì)象,包含[1, 3, 5, 7, 9]
    

4康二、小結(jié)

  1. for循環(huán)為迭代循環(huán)
  2. 可遍歷序列成員(字符串碳胳,列表,元組)
  3. 可遍歷任何可迭代對(duì)象(字典沫勿,文件等)
  4. 可以用在列表解析和生成器表達(dá)式中

六挨约、循環(huán)控制語(yǔ)句

1、break

  1. 說(shuō)明
    python中的break語(yǔ)句用法产雹,常用在滿足某個(gè)條件诫惭,需要立刻退出當(dāng)前循環(huán)時(shí)(跳出循環(huán)),break語(yǔ)句可以用在for循環(huán)和while循環(huán)語(yǔ)句中蔓挖。簡(jiǎn)單的說(shuō)夕土,break語(yǔ)句是會(huì)立即退出循環(huán),在其后邊的循環(huán)代碼不會(huì)被執(zhí)行
  2. 配合for循環(huán)使用
    for letter in 'Python': 
      if letter == 'h':
           break
      print (letter), 
    
  3. 配合while循環(huán)使用
    var = 10
    while var > 0:
        print(var)
        var -= 1
        if var == 5:#當(dāng)var是5的時(shí)候跳出循環(huán)執(zhí)行下面的代碼
            break
    print("循環(huán)結(jié)束")
    

2瘟判、continue

  1. 說(shuō)明
    使循環(huán)跳過(guò)其主體的剩余部分怨绣,并立即進(jìn)入下一次循環(huán)
  2. 配合while循環(huán)使用
    var = 10                    # 第二個(gè)實(shí)例
    while var > 0:              
       var -= 1
       if var == 3:             # 變量為 5 時(shí)跳過(guò)輸出,繼續(xù)循環(huán)
          continue
       print ('當(dāng)前變量值 :', var)
    print ("循環(huán)結(jié)束")
    
  3. 配合for循環(huán)使用
    for letter in 'Python':    
        if letter == 'h':
            continue
            print ('continue語(yǔ)句之后...')
        print ('當(dāng)前字符:', letter)
    

3、 pass

  1. 說(shuō)明
    當(dāng)語(yǔ)法需要但不需要執(zhí)行任何命令或代碼時(shí)拷获,Python中就可以使用pass語(yǔ)句篮撑,此語(yǔ)句什么也不做,用于表示“占位”的代碼匆瓜,
  2. 基礎(chǔ)使用
    for letter in 'Python': 
        if letter == 'h':   
            pass          #什么都不做
            print ('pass') 
        print ('當(dāng)前字母 :', letter)
    print ("循環(huán)結(jié)束...")
    

七咽扇、循環(huán)總結(jié)

循環(huán)是讓計(jì)算機(jī)做重復(fù)任務(wù)的有效的方法,有些時(shí)候陕壹,如果代碼寫得有問(wèn)題,會(huì)讓程序陷入“死循環(huán)”树埠,也就是永遠(yuǎn)循環(huán)下去糠馆。這時(shí)可以用 Ctrl+C 退出程序,或者強(qiáng)制結(jié)束 Python 進(jì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)店門躁垛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)剖毯,“玉大人,你說(shuō)我怎么就攤上這事教馆⊙纺保” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵土铺,是天一觀的道長(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)容

  • 一庶喜、快捷鍵 ctr+b 執(zhí)行ctr+/ 單行注釋ctr+c ...
    o_8319閱讀 5,782評(píng)論 2 16
  • 2.相等運(yùn)算符 3.is:同一性運(yùn)算符 #避免將is運(yùn)算符用于比較類似數(shù)值和字符串這類不可變值小腊,由于Python內(nèi)...
    mydre閱讀 658評(píng)論 0 1
  • 一.day5作業(yè) 讀程序,總結(jié)程序的功能: 1. numbers=1 for i in range(0,20): ...
    魅影_0d2e閱讀 1,044評(píng)論 0 0
  • Java經(jīng)典問(wèn)題算法大全 /*【程序1】 題目:古典問(wèn)題:有一對(duì)兔子久窟,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子秩冈,小兔子...
    趙宇_阿特奇閱讀 1,844評(píng)論 0 2
  • 遠(yuǎn)處的浮云流浪在山間,靜靜地斥扛,從山的這頭蕩到山的那邊入问。山上的樹(shù),像村野老人稀颁,靜默在山巖邊芬失,在浮云的遮蔽下,活...
    阿爾法harry閱讀 433評(píng)論 0 0