<button id="2ddn7"><acronym id="2ddn7"></acronym></button>

<button id="2ddn7"><acronym id="2ddn7"></acronym></button>

  • <button id="2ddn7"><object id="2ddn7"></object></button>
      1. <s id="2ddn7"></s>
        更多課程 選擇中心


        Python培訓

        400-111-8989

        利用python完成枯燥重復的任務:控制流

        • 發布:Python培訓
        • 來源:Python練習題庫
        • 時間:2018-02-01 11:51

        聲明:本系列教程翻譯自AUTOMATE THE BORING STUFF WITH PYTHON,原作者Al Sweigart

        你已經知道一些組成程序的基本元素。然而程序真正的力量不只局限于像一份周末任務清單一樣一項一項地執行,基于條件表達式的值,它可以決定某段代碼是否跳過,或者重復,或者選擇一個分支進行下去。


        布爾值

        布爾值也是一種數據類型,它只有兩個值:True和False(注意大小寫)

        和其他類型的值一樣,布爾值也可以和其他元素構成表達式或存進變量中。

        如果輸入錯誤的大小寫,或者作為變量名,就會引起錯誤:

        >>> spam = True 

        >>> spamTrue>>> true 

        Traceback (most recent call last):   

            File "<stdin>", line 1, in <module>

        NameError: name 'true' is not defined

        >>> True = 2 + 2 

            File "<stdin>", line 1

        SyntaxError: can't assign to keyword

        >>>

        比較操作符

        比較操作符比較兩邊元素的大小,得出一個布爾值

        >>> 42 == 42

        True

        >>> 42 == 99

        False

        >>> 2 != 3

        True

        >>> 2 != 2

        False

        >>> 'hello' == 'hello'

        True

        >>> 'hello' == 'Hello'

        False

        >>> 'dog' != 'cat'

        True

        >>> True == True

        True

        >>> True != False

        True

        >>> 42 == 42.0

        True

        >>> 42 == '42'

        False

        >>>

        <,>,<=和>=操作符只能對整型和浮點型進行操作;注意“==”和“=”的區別

        >>> 42 < 100

        True

        >>> 42 > 100

        False

        >>> 42 < 42

        False

        >>> eggCount = 42

        >>> eggCount <= 42

        True

        >>> myAge = 29

        >>> myAge >= 10

        True

        >>>

        布爾操作符

        and,or,not三個布爾操作符用于比較布爾值,并給出一個布爾值

        and和or都是對兩個布爾值或表達式進行操作,所以是二元操作符

        >>> True and True

        True

        >>> True and False

        False

        >>>

        >>> False or True

        True

        >>> False or False

        False

        >>>

        >>> not True

        False

        >>> not not not not True

        True

        >>>

        布爾操作符和比較操作符

        既然用比較操作符可以得到布爾值,那么可以在表達式中并用比較操作符和布爾操作符

        >>> (4 < 5) and (5 < 6)

        True

        >>> (4 < 5) and (9 < 6)

        False

        >>> (1 == 2) or (2 == 2)

        True

        >>>

        上例中,電腦先計算左邊的表達式,再計算右邊的表達式,再計算得出整個表達式的布爾值

        >>> 2 + 2 == 4 and not 2 + 2 == 5 and 2 * 2 == 2 + 2

        True

        >>>

        優先級:not>and>or


        計算(4<5)and(5<6)得到True

        控制流要素

        了解控制流語句之前,先介紹條件代碼塊的概念。目前為止出現的布爾表達式都可以作為控制流語句的條件。一個條件得出一個布爾值,控制流語句決定做什么正是基于條件的布爾值。幾乎每個控制流語句都要用到條件。

        幾行代碼組成一個代碼塊,通過縮進可以判斷代碼塊的起止。塊遵循三個規則:

        • 塊開始于縮進值增加的地方

        • 塊可以包含另外的塊

        • 塊結束于縮進值減為0或上級代碼塊的縮進值時

        (貌似很復雜,其實看下面就明白了)

        name = 'Mary'
        password = 'swordfish'
        if name == 'Mary':
            print('Hello Mary')
            if password == 'swordfish':
                print('Access granted.')
            else:
                print('Wrong password.')

        程序并不是總要一行一行地執行,有時也會跳來跳去,因為它們用到了

        控制流語句

        最常見的控制流語句是if語句,由3個部分組成:

        • if關鍵字

        • 冒號

        • 下一行開始的縮進的代碼塊(if 語句主體)

        if name == 'Alice':
            print('Hi, Alice.')

        上例的流程圖如下

        if語句的流程圖

        if語句后面也可以加上else語句,只有當if語句的條件為False才執行else語句

        else語句沒有條件,由3部分組成:

        • else關鍵字

        • 冒號

        • 下一行開始的縮進的代碼塊(else 語句主體)

        name = 'Bob'
        if name == 'Alice':
            print('Hi, Alice.')
        else:
            print('Hello, stranger.')

        上例的流程圖如下

        else語句的流程圖

        如果分多種情況,那么需要elif語句,它由以下部分組成:

        • elif關鍵字

        • 條件

        • 冒號

        • 下一行開始的縮進的代碼塊(elif 語句主體)

        name = 'Bob'
        age = 5
        if name == 'Alice':
            print('Hi, Alice.')
        elif age < 12:
            print('You are not Alice, kiddo.')


        elif語句的流程圖

        name = 'Dracula'
        age = 4000
        if ame == 'Alice':
            print('Hi, Alice.')
        elif age < 12:
            print('You are not Alice, kiddo.')
        elif age > 2000:
            print('Unlike you, Alice is not an undead, immortal vampire.')
        elif age > 100:
            print('You are not Alice, grannie.')


        多個elif語句的流程圖

        如果只有elif語句,那么可能沒有分支能夠執行(如果條件都是False)。想要至少有一種情況執行,可以在最后添加else語句

        name = 'Bob'
        age = 30
        if name == 'Alice':
            print('Hi, Alice.')
        elif age < 12:
            print('You are not Alice, kiddo.')
        else:
            print('You are neither Alice nor a little kid.')


        觀察下面的流程圖,打岔的分支是不可能發生的(為什么?)

        如果想一直重復某塊代碼,可以使用while循環語句(當循環),只要它的條件一直為True,換句話說,當條件變為False時,while循環才退出。其組成部分:

        • while關鍵字

        • 條件

        • 冒號

        • 下一行開始的縮進的代碼塊(while 語句主體)

        不同于if語句執行完就跳出并往下執行,while 語句主體執行完會回去檢驗條件的布爾值,若為True則繼續執行while 語句主體,直到條件的布爾值變為False才跳出。請看下例

        spam = 0
        if spam < 5:
            print('Hello, world.')
            spam = spam + 1

        輸出結果

        Hello, world.

        同樣的條件,同樣的動作,while語句的輸出結果則不同

        spam = 0
        while spam < 5:
            print('Hello, world.')
            spam = spam + 1

        輸出結果

        Hello, world.

        Hello, world.

        Hello, world.

        Hello, world.

        Hello, world.

        它們各自的流程圖如下

        if語句

        while語句

        有一種情況:while循環的條件永遠為True,那么while循環將無限循環,沒完沒了。

        在while 語句主體中使用break語句可以立刻結束循環。break語句只由break關鍵字組成。

        while True: 

            print('Please type your ame.')

            name = input() 

            if name == 'your ame': 

                break

        print('Thank you!')

        上面第一行創造了一個無限循環(條件True的布爾值永遠是True),退出當且僅當break語句被執行,其流程圖如下(無限循環也叫死循環,是一種常見的程序bug)

        和break語句一樣,continue語句用于while循環里。當程序碰到continue時,立即跳回循環的開頭,重新檢驗條件是否成立。

        如果程序陷入死循環,按下CTRL+C(這個組合鍵會向程序發送KeyboardInterrupt錯誤來使程序立刻終止),或者在菜單中選擇Shell?restart Shell來結束程序。

        while True:

            print('Who are you?')

            name = input()

            if name != 'Joe':

                continue

            print('Hello, Joe. What is the password? (It is a fish.)') 

            password = input() 

            if password == 'swordfish':

                break 

        print('Access granted.') 


        打岔路線永不發生,因為條件總為True

        作為條件時,其他數據類型的值也分為“真”值和“假”值,分別對應于True或False,比如0、0.0、''(空字符串)等價于False,而其他值等價于True。嘗試執行以下代碼并觀察結果

        name = ''

        while not name: 

            print('Enter your name:')

            name = input()

        print('How many guests will you have?')

        numOfGuests = int(input())

        if numOfGuests: 

            print('Be sure to have enough room for all your guests.')

        print('Done')

        你也可以把條件“not name” 換成“ not name != '' ”,把條件“numOfGuests”換成“numOfGuests != 0”,但是使用真假值可以使代碼更簡潔。

        while循環會一直循環,只要條件為真(True)。但是如果想讓一塊代碼執行僅執行特定的次數呢?for 循環語句range() 函數可以實現。

        for循環語句長這樣 for i in range(5): ,它總是包含

        • for關鍵字

        • 一個變量名

        • in關鍵字

        • 最多可接受3個整型實參的range()函數

        • 冒號

        • 下一行開始的縮進的代碼塊(for 語句主體)

        程序示例

        print('My name is')
        for i in range(5):
            print('Jimmy Five Times (' + str(i) + ')')

        for循環里的代碼執行5次,第一次變量 i 設為 0,下次為1,逐步增長到4(不是5)

        程序的結果是

        My name is
        Jimmy Five Times (0)
        Jimmy Five Times (1)
        Jimmy Five Times (2)
        Jimmy Five Times (3)
        Jimmy Five Times (4)

        注意:for循環里也可以使用break和continue。

        continue忽略后面的代碼直接從計數器 i 的下一個值開始。break和continue只能用在while循環和for循環里,用在別處python會報錯。

        作為for循環的另一個例子,這里有一個關于數學家高斯的故事。在高斯還只是個孩子的時候,他的數學老師有一天不想上課,就讓全班孩子計算0加到100的總和。高斯使用一種巧妙的方法快速得出了答案。當然現在我們可以寫一個程序,計算交給python去做。

        total = 0

        for num in range(101): 

            total = total + num

        print(total) 

        答案是5050。首先變量 total 設為0,然后for循環執行 total = total + num 一百次,0到100的整數就都加到 total 上面了。即使是最慢的電腦,得出答案需要的時間也不超過1秒。

        也可以寫個等價的while循環實現上述做法,只是沒有for循環來的簡潔。

        print('My name is')
        i = 0
        while i < 5:
            print('Jimmy Five Times (' + str(i) + ')')
            i = i + 1

        它的輸出和前面的前面的for循環是一樣的。

        range() 有起始參數,終止參數和步長參數,因此是一個多參數函數,括號中的參數之間用逗號隔開。

        for i in range(12, 16):
            print(i)

        第一個參數12是for循環的變量開始時候的值,第二個參數16規定 i 增長結束的地方(不包括此參數值)。第三個參數步長是每執行一次循環主體后,變量 i 增加的數值。步長是可選的,即不寫時默認為1。

        for i in range(0, 10, 2):
            print(i)

        調用range(0, 10, 2),以2為間隔從0數到8。

        甚至可以使用負的步長,讓for循環倒著數。

        for i in range(5, -1, -1):
            print(i)

        結果是

        5
        4
        3
        2
        1
        0

        導入函數庫

        每個python程序都能調用一系列基本的函數叫做內置函數,包括之前見到的print(),input(),len()。

        Python也自帶一些模塊叫做標準庫。每個庫/模塊都是一個python程序,它包含一些同類型功能的函數,并且可以為我們所調用。比如,math庫含有許多與數學相關的函數,random庫含有許多與隨機數相關的函數,等等。

        在能夠使用庫模塊里的函數之前,需要先使用import語句導入庫模塊,它由以下部分組成:

        • import關鍵字

        • 庫的名稱

        • 更多庫的名稱(可選,庫名之間用逗號隔開)

        import random
        for i in range(5):
            print(random.randint(1, 10))

        輸出結果:

        4
        1
        8
        4
        1

        randint(1, 10)的作用是隨機給出介于1和10之間的整數。因為randint()屬于random庫,所以在函數名前面需要加上random.來告訴python從哪里找到這個函數。同時導入多個庫可以這么做:

        import random, sys, os, math

        這樣我們就可以隨意使用其中的函數了,更詳細的內容參見后續章節。

        另一種import語句由以下要素組成:from關鍵字、庫名、import關鍵字、*號。例如from random import *。使用這種形式后,在調用random庫函數時不用寫random.前綴,但為了代碼的可讀性,使用一般的import語句會好些。

        最后介紹的控制流概念是如何終止程序。雖然代碼執行到最后一行就會退出,但我們也可以調用sys.exit()來退出程序,記得先導入sys庫。程序示例

        while True:
            print('Type exit to exit.')
            response = input()
            if response == 'exit':
                sys.exit()
            print('You typed ' + response + '.')

        本文內容轉載自網絡,本著傳播與分享的原則,來源/作者信息已在文章頂部表明,版權歸原作者所有,如有侵權請聯系我們進行刪除!

        預約申請免費試聽課

        填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

        上一篇:8步搞定Python EasyGui模塊安裝
        下一篇:Python3:Python 進程和線程

        2021年Python面試題及答案匯總詳解

        python數據分析,你需要這些工具

        Python培訓講解二叉樹的三種深度

        Python培訓:如何實現窮舉搜索?

        • 掃碼領取資料

          回復關鍵字:視頻資料

          免費領取 達內課程視頻學習資料

        • 視頻學習QQ群

          添加QQ群:1143617948

          免費領取達內課程視頻學習資料

        Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

        選擇城市和中心
        黑龍江省

        吉林省

        河北省

        湖南省

        貴州省

        云南省

        廣西省

        海南省

        青青青草网站免费观看|青青青视频在线观看 超真实强奷视频在线看 百度 好搜 搜狗
        <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>