亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python基礎教程之控制結構詳解

 更新時間:2021年11月25日 09:44:21   作者:盼小輝丶  
Python中有三大控制結構,分別是順序結構、分支結構(選擇結構)以及循環(huán)結構,任何一個項目或者算法都可以使用這三種結構來設計完成,這篇文章主要給大家介紹了關于Python基礎教程之控制結構的相關資料,需要的朋友可以參考下

0. 學習目標

Python 是簡潔、易學、面向對象的編程語言。它不僅擁有強大的原生數(shù)據(jù)類型,也提供了簡單易用的控制語句。在《Python基礎教程》的系列博文中,我們已經介紹了 Python 中的內置原生數(shù)據(jù)類型,并且也了解了程序如何利用輸入、輸出語句與用戶進行交互。本節(jié)的主要目標是介紹 Python 的控制語句,為接下來的學習奠定基礎,本文會完整的介紹學習數(shù)據(jù)結構和算法所需的 Python 基礎知識及基本思想,并給出相應的實戰(zhàn)示例及解釋。

  • 理解并掌握 Python 條件語句與循環(huán)語句
  • 掌握 Python 條件語句與循環(huán)語句的復雜嵌套以及列表解析式

1. 代碼塊與縮進

代碼塊是一組語句,Python 中用于定義代碼塊的語法對于所有控制結構來說是相同的,可用于滿足條件時執(zhí)行代碼( if 語句),也可用于代碼多次執(zhí)行(循環(huán))等。代碼塊是通過縮進代碼(可以使用空格或制表符)來創(chuàng)建的。在Python中,使用冒號 (:) 指出接下來是一個代碼塊,在同一個代碼塊中,各行代碼的縮進量(一般每級縮進 4 個空格)必須相同:

if condition is True:
    print('this is a block')
    print('another line of this block')
print('escaped the previous block')

在指定函數(shù)體和類體時,代碼塊的原則同樣適用。

2. 條件語句

以上示例語句都是逐條執(zhí)行的,但實際應用中讓程序選擇執(zhí)行特定的語句塊是必備的。這時布爾類型就派上用場了。

用作布爾表達式時,標準值 False 和 None、數(shù)值 0、空序列(如空字符串、空元組和空字典等)都被視為假,而其他值均被視為真。這意味著任何 Python 值都可解釋為真值,但 True 和 False 為標準真值。在 C 語言中,標準真值為 0 (表示假)和 1 (表示真)。實際上,True 和 False 是 0 和 1 的別名,其作用是完全相同的:

>>> bool('')
False
>>> bool([0])
True
>>> bool('Hello world')
True
>>> True == 1
True
>>> True + 2
3

程序運行時,Python 會在需要時自動將任意值轉換為布爾值,而無需顯式地進行轉換:

# test_bool.py
string_test = 'Hello world'
if string_test:
    print('Automatic conversion ')

以上腳本執(zhí)行結果如下,表明 Python 執(zhí)行了自動轉換:

Automatic conversion

需要注意的是,雖然值轉換為真值后可能相等,例如 bool({}) == bool([]) == False,但本身它們并不相等,即 {} != []

>>> bool({}) == bool([])
True
>>> {} == []
False

2.1 if 語句

條件語句(也稱 if 語句)能夠有條件地執(zhí)行代碼,如果條件( if 和冒號之間的表達式)為真,就執(zhí)行后續(xù)代碼塊;如果條件為假,就不執(zhí)行:

if flag == True:
    flag = False
print(flag)

上示 if 語句也稱單路分支結構,如果 flag 為 True,則將其變?yōu)?False,再打印 flag 值。還有另一種條件結構稱為二元分支(也稱 if...else 語句)

answer = input('Please enter your answer: ')
if answer == 'A':
    print('Right!')
else:
    print('Error!')

在上述例子中,Python 會檢查用戶輸入答案,如果輸入為 A,則打印 “Right!”,否則,會執(zhí)行else 分支打印 “Error!”。

要檢查多個條件,可使用 elif,elif 是 else if 的縮寫,可以將其理解為包含條件的 else 子句:

num = int(input('Please enter a number: ')) 
if num > 0: 
    print('The number is positive') 
elif num < 0: 
    print('The number is negative') 
else: 
    print('The number is zero') 

需要注意的是,在使用 elif 時,最后的 else 是必需的,它用來在所有分支條件都不滿足的情況下提供默認分支。

上述三種條件結構可以用以下流程圖表示:

流程圖

綜上,我們可以總結出 Python 中,條件語句的最一般形式:

if first_condition:
    first_block
elif second_condition:
    second_block
elif third_condition:
    third_block
else:
    fourth_block

每個條件都是一個布爾表達式,每個代碼塊包含一個或多個滿足條件時要執(zhí)行的語句。如果第一個條件為真,則執(zhí)行第一個代碼塊,而不會評估其他條件。如果第一個條件失敗,則繼續(xù)判斷第二個條件,以此類推。if 語句可以包括任意數(shù)量的 elif 子句 (也可以為 0 個),最后一個 else 子句是可選的。

2.2 if 語句的嵌套

條件結構支持嵌套,即在 if 語句中調用任意數(shù)量的 if 語句:

if alcohol < 20:
    print('Does not constitute drinking behavior!')
else:
    if alcohol > 80:
        print('Already meet drinking and driving standards!')
    else:
        print('Has reached the standard for drunk driving!')

上述程序所表達的邏輯可以用流程圖表示:

if 語句的嵌套

2.3 斷言

為了讓程序在錯誤條件出現(xiàn)時立即中止,Python 還提供了類似 if 語句的關鍵字:assert,使用此關鍵字可以要求某些條件必須得到滿足。assert 語句類似檢查點,當我們知道程序的執(zhí)行必須滿足特定條件,才能正確地運行時,使用assert 語句可以及時終止程序運行,類似網(wǎng)站注冊時郵箱格式正確性的檢查:

>>> mail_1 = 'test123456789@gmail.com'
>>> assert mail_1.endswith('.com')
>>> mail_2 = 'test123456789@gmail.con'
>>> assert mail_2.endswith('.com')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError

為了說明程序終止的原因,可以在 assert 語句后添加說明字符串:

>>> assert mail_2.endswith('.com'),' Email must end with .com '
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError:  Email must end with .com

3. 循環(huán)

我們已經學習了如何在條件為真(或假)時執(zhí)行代碼塊,但如何重復操作代碼塊多次呢?例如,打印 1—100 內的所有的偶數(shù)。我們當然可以寫出 50 行 print 語句,但如果是這樣,我們就不需要 Python 了。

Python 提供了兩種不同的循環(huán)結構。while 循環(huán)允許對布爾條件進行重復測試,直到條件不能得到滿足。for 循環(huán)提供了遍歷序列的迭代(例如字符串的字符、列表的元素或給定范圍內的數(shù)字等)。

for 循環(huán)和 while 循環(huán)

3.1 while 循環(huán)

while 語句會在給定條件為真時重復執(zhí)行代碼塊。例如,在下面的示例中,變量 number 被初始化為 0,并且在 while 循環(huán)中,它每迭代一次就遞增 1,每次執(zhí)行循環(huán)體前,首先進行條件判斷,因此直到 number 等于 5 時結束循環(huán):

number = 0
while number < 5:
    print('A total of {} time(s)'.format(number))
    number += 1

程序運行結果如下:

A total of 0 time(s)

A total of 1 time(s)

A total of 2 time(s)

A total of 3 time(s)

A total of 4 time(s)

3.2 for 循環(huán)

while 語句可用于在條件為真時反復執(zhí)行代碼塊,但有時候我們可能需要為序列中每個元素執(zhí)行代碼塊。

為了介紹 for 循環(huán),我們首先要了解可迭代對象,可迭代對象是可使用 for 循環(huán)進行遍歷的對象,對于現(xiàn)階段,我們可以只需將可迭代對象視為序列即可。
for 語句可以用于遍歷一個序列中的每個元素:

fruits = ['apple', 'orange', 'banana', 'lemon']
for fruit in fruits:
    print(fruit)

for 語句將列表 fruits 中的每一個值依次賦給變量 fruit。然后,代碼塊就會被執(zhí)行。for 語句的常見用法是在一定的值范圍內進行有限次數(shù)的迭代。

我們已經在介紹數(shù)據(jù)類型 list 時,簡單的介紹過內置函數(shù) range 用于創(chuàng)建范圍,range 語法類似于切片,包含起始位置,但不包含結束位置。實際上,如果只提供了一個位置,將把這個位置視為結束位置,而起始位置為 0。同時也可以為 range 函數(shù)提供步長參數(shù),在范圍內每隔若個元素提取一個元素:

for i in range(0, 10, 2):
    print('The square of {} equals {}'.format(i, i**2))

程序的輸出結果如下:

The square of 0 equals 0

The square of 2 equals 4

The square of 4 equals 16

The square of 6 equals 36

The square of 8 equals 64

使用 for 循環(huán)還可以遍歷字典,默認情況下,是遍歷字典的鍵,如果需要遍歷所有的值或鍵-值對,就需要用到字典的 values 和 items 方法了:

fruits = {'apple': 5.0, 'orange': 3.5, 'banana': 4.0}
for k in fruits:
    print(k, 'corresponds to', fruits[k])

上示代碼等價于:

fruits = {'apple': 5.0, 'orange': 3.5, 'banana': 4.0}
for k, v in fruits.items():
    print(k, 'corresponds to', v)

3.3 中斷循環(huán)

通常,循環(huán)會不斷地執(zhí)行代碼塊,直到條件為假或迭代完序列中的所有元素。但有時,我們可能需要開始新迭代(跳到下一次迭代開頭,并不結束循環(huán))或直接結束循環(huán)。

?? break

要結束循環(huán),可使用 break,假設要找到最大的三位水仙花數(shù)(每個位上的數(shù)字的 3 次冪之和等于它本身的三位數(shù)),可以從 999 開始向下迭代,找到一個水仙花數(shù)后,無需繼續(xù)迭代,直接跳出循環(huán):

for i in range(999, 99, -1):
    b = i % 10
    t = (i // 10) % 10
    h = i // 100
    if b ** 3 + t ** 3 + h ** 3 == i:
        print(i)
        break

運行此程序,將在打印 407 后結束,在上述示例中,可以看到通過將 range 的步長設置為負數(shù),讓 range 反向迭代。

常規(guī)的 while 循環(huán)會在循環(huán)開頭時進行判斷用來結束循環(huán),但有時我們想要循環(huán)在循環(huán)體中結束,這時就需要用到 while True/break 語法了,使用 while True 可以使循環(huán)永不結束,然后在循環(huán)體內使用 if 語句,當 if 語句的條件得到滿足時調用 break 結束循環(huán),例如在登陸界面中,只有用戶輸入了正確的用戶名才能進行下一步操作:

users = ['root', 'admin', 'user_1']
while True:
    user = input('Please enter your name: ')
    if user in users:
        break
    print('User does not exist!')
print('The user name is correct!')

?? continue

當指定語句 continue 時,它結束當前迭代,并跳到下一次迭代開頭。這基本上意味著跳過循環(huán)體中余下的語句,但不結束循環(huán),例如計算所有水仙花數(shù),如果使用語句 continue,則可以寫為:

for i in range(100, 1000):
    b = i % 10
    t = (i // 10) % 10
    h = i // 100
    if b ** 3 + t ** 3 + h ** 3 != i:
        continue
    print(i)

程序輸出結果如下:

153

370

371

407

4. 控制語句綜合嵌套

控制語句可以進行復雜的綜合嵌套,可以通過打印九九乘法表來綜合使用控制語句:

for i in range(1, 10):
    for j in range(1, 10):
        if i > j:
            print('{} * {} = {}'.format(i, j, i*j), end = '\t')
        elif i == j:
            print('{} * {} = {}'.format(i, j, i*j))
        else:
            continue

5. 列表解析式

列表推導是利用列表創(chuàng)建新列表的方式,列表推導的工作原理類似于 for 循環(huán):

>>> [i**2 for i in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

在列表推導中也可以進行嵌套,例如添加更多的 for 循環(huán)和 if 語句:

>>> [[i, j] for i in range(10) for j in range(10) if i % 3 == 0 and j % 4 == 0]
[[0, 0], [0, 4], [0, 8], [3, 0], [3, 4], [3, 8], [6, 0], [6, 4], [6, 8], [9, 0], [9, 4], [9, 8]]

等價于:

new_list = []
for i in range(10):
    for j in range(1):
        if i % 3 == 0 and j % 4 == 0:
            new_list.append([i, j])

除了列表推導式外,還可以使用花括號來執(zhí)行字典推導:

>>> print({i: i**3 for i in range(10)})
{0: 0, 1: 1, 2: 8, 3: 27, 4: 64, 5: 125, 6: 216, 7: 343, 8: 512, 9: 729} 

注意:

1、循環(huán)也是以冒號(:)結尾

2、條件為各種算術表達式,

a) 當為真時,循環(huán)體語句組 1,重復執(zhí)行

b) 當為假是,循環(huán)體語句組 2,停止執(zhí)行

3、如果循環(huán)體忘記累計,條件判斷一直為真,則為死循環(huán)。循環(huán)體一直實行。

a) 死循環(huán)有時候經常被用來構建無限循環(huán)

b) 可以使用 ctrl+c 終止,或者停止 IDE

總結

到此這篇關于Python基礎教程之控制結構的文章就介紹到這了,更多相關Python控制結構內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用python制作一個簡單的井字棋游戲

    使用python制作一個簡單的井字棋游戲

    井字棋(Tic-Tac-Toe)是一種經典的兩人棋盤游戲,通常由兩名玩家輪流下棋,目標是在一個3x3的棋盤上先形成橫向、縱向或對角線的三個棋子,本文將介紹如何使用 Python 制作一個簡單的井字棋游戲、包括游戲規(guī)則、界面設計和實現(xiàn)代碼,需要的朋友可以參考下
    2023-11-11
  • python圖像常規(guī)操作

    python圖像常規(guī)操作

    這篇文章主要介紹了python圖像常規(guī)操作,比較全面,涉及讀取和存儲,生成縮略圖,調整尺寸與旋轉,繪制圖像輪廓等相關內容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Python實現(xiàn)導彈自動追蹤代碼實例

    Python實現(xiàn)導彈自動追蹤代碼實例

    這篇文章主要介紹了Python實現(xiàn)導彈自動追蹤代碼實例,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • Python 京東云無線寶消息推送功能

    Python 京東云無線寶消息推送功能

    這篇文章主要介紹了Python 京東云無線寶消息推送功能,發(fā)送釘釘消息獲取可用積分,詳細配置文件通過實例代碼給大家講解的很詳細,代碼+注釋講解的很詳細,需要的朋友可以參考下
    2021-05-05
  • Python利用帶權重隨機數(shù)解決抽獎和游戲爆裝備問題

    Python利用帶權重隨機數(shù)解決抽獎和游戲爆裝備問題

    帶權重隨機數(shù)即是隨機數(shù)各個區(qū)間段被抽中的概率根據(jù)權重而不同,這里我們就來看一下Python利用帶權重隨機數(shù)解決抽獎和游戲爆裝備問題的方法,首先還是來進一步解釋帶權隨機數(shù):
    2016-06-06
  • Python基礎之字典的詳細使用教程

    Python基礎之字典的詳細使用教程

    字典作為Python的一個內置數(shù)據(jù)結構,和列表一樣都是可變序列的,但是它是無序的,以鍵值對的方式存儲數(shù)據(jù)。本文將詳解一下Python中字典的使用,需要的可以參考一下
    2022-07-07
  • Python中數(shù)組遍歷的方法總結

    Python中數(shù)組遍歷的方法總結

    數(shù)組是編程中經常使用的數(shù)據(jù)結構,用于存儲和操作一組元素,Python提供了多種方法來遍歷數(shù)組,本文將深入探討這些方法,提供詳細的示例代碼,希望對大家有所幫助
    2023-11-11
  • 編寫Python的web框架中的Model的教程

    編寫Python的web框架中的Model的教程

    這篇文章主要介紹了編寫Python的web框架中的Model的教程,示例代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • python編寫的最短路徑算法

    python編寫的最短路徑算法

    本文給大家分享的是python 無向圖最短路徑算法:請各位大大指教,繼續(xù)改進。(修改了中文字符串,使py2exe中文沒煩惱),需要的朋友可以參考下
    2015-03-03
  • Python?Base64編碼和解碼操作

    Python?Base64編碼和解碼操作

    Base64?就是一種基于64個可打印字符來表示二進制數(shù)據(jù)的方法,這篇文章主要介紹了Python?Base64編碼和解碼,需要的朋友可以參考下
    2022-12-12

最新評論