天天看點

Python Day2條件語句循環語句

Python基礎知識

  • 條件語句
    • if語句
    • if - else語句
    • if - elif - else語句
    • assert關鍵字
  • 循環語句
    • while循環
    • while - else 循環
    • for循環
    • for - else 循環
    • range()函數
    • enumerate()函數
    • break語句
    • continue 語句
    • pass 語句
    • 推導式
      • 清單推導式
      • 元組推導式
      • 字典推導式
      • 集合推導式
    • next()函數

條件語句

if語句

if

語句用來對代碼進行邏輯控制,具體用法如下

if expression:
    expr_true_suite
           
  • if

    語句的

    expr_true_suite

    代碼塊隻有當條件表達式

    expression

    結果為真時才執行,否則将繼續執行緊跟在該代碼塊後面的語句。
  • 單個

    if

    語句中的

    expression

    條件表達式可以通過布爾操作符

    and

    or

    not

    實作多重條件判斷。
  • 要注意

    expression

    後面的冒号,以及後面代碼塊的縮進
  • if

    語句支援嵌套,即在一個

    if

    語句中嵌入另一個

    if

    語句,進而構成不同層次的選擇結構。

if - else語句

Python 提供與

if

搭配使用的

else

,如果

if

語句的條件表達式結果布爾值為假,那麼程式将執行

else

語句後的代碼。

其僞代碼文法如下

if expression:
    expr_true_suite
else:
    expr_false_suite
           

if - elif - else語句

elif

語句即為

else if

,用來檢查多個表達式是否為真,并在為真時執行特定代碼塊中的代碼。

其僞代碼文法如下

if expression1:
    expr1_true_suite
elif expression2:
    expr2_true_suite
    .
    .
elif expressionN:
    exprN_true_suite
else:
    expr_false_suite
           

assert關鍵字

assert

關鍵字我們稱之為“斷言”,當這個關鍵詞後邊的條件為

False

時,程式自動崩潰并抛出

AssertionError

的異常。

示例代碼

運作結果

AssertionError Traceback (most recent call last) <ipython-input-1-0295be16ec13> in <module> ----> 1 assert 3 > 7

AssertionError:

循環語句

while循環

while

語句最基本的形式包括一個位于頂部的布爾表達式,一個或多個屬于

while

代碼塊的縮進語句。

while

循環的代碼塊會一直循環執行,直到布爾表達式的值為布爾假。

其僞代碼文法為

while 布爾表達式:
    代碼塊
           
  • 如果布爾表達式不帶有

    <

    >

    ==

    !

    =、

    in

    not in

    等運算符,僅僅給出數值之類的條件,也是可以的。當

    while

    後寫入一個非零整數時,視為真值,執行循環體;寫入0時,視為假值,不執行循環體。
  • 也可以寫入

    str

    list

    或任何序列,長度非零則視為真值,執行循環體;否則視為假值,不執行循環體。

while - else 循環

while

循環正常執行完的情況下,執行

else

輸出,如果

while

循環中執行了跳出循環的語句,比如

break

,将不執行

else

代碼塊的内容。

其僞代碼文法如下

while 布爾表達式:
    代碼塊
else:
    代碼塊
           

for循環

  • for

    循環是疊代循環,在Python中相當于一個通用的序列疊代器,可以周遊任何有序序列,如

    str

    list

    tuple

    等,也可以周遊任何可疊代對象,如

    dict

  • 每次循環,疊代變量被設定為可疊代對象的目前元素,提供給代碼塊使用。

其僞代碼文法如下

for 疊代變量 in 可疊代對象:
    代碼塊
           

for - else 循環

while - else

循環類似,當

for

循環正常執行完的情況下,執行

else

輸出,如果

for

循環中執行了跳出循環的語句,比如

break

,将不執行

else

代碼塊的内容,與

while - else

語句一樣。

其僞代碼文法如下

for 疊代變量 in 可疊代對象:
    代碼塊
else:
    代碼塊
           

range()函數

其參數清單如下

  • 這個BIF(Built-in functions)有三個參數,其中用中括号括起來的兩個表示這兩個參數是可選的。
  • step=1 表示第三個參數的預設值是1。
  • range 這個BIF的作用是生成一個從start參數的值開始到stop參數的值結束的數字序列,該序列包含start的值但不包含stop的值。

最常用的用法如下

for i in range(2, 9, 1): #左閉右開 步長為1
    print(i)
           

運作結果

2

3

4

5

6

7

8

enumerate()函數

其參數清單如下

  • sequence

    :一個序列、疊代器或其他支援疊代對象。
  • start

    :下标起始位置。
  • 傳回

    enumerate

    (枚舉) 對象

示例代碼

tem = [3, 2, 1, 7]
print(list(enumerate(tem)))
           

運作結果

[(0, 3), (1, 2), (2, 1), (3, 7)]

注意:

  • enumerate() 函數對可疊代對象進行疊代,傳回

    下标-值

  • enumerate() 函數對字典疊代傳回的是

    下标-關鍵字

  • enumerate() 與

    for

    循環的結合使用。
    for i, a in enumerate(A)
    do something with a 
               

    enumerate(A)

    不僅傳回了 A 中的元素,還順便給該元素一個索引值 (預設從 0 開始)。此外,用

    enumerate(A, j)

    還可以确定索引起始值為

    j

break語句

break

語句可以跳出目前所在層的循環。

continue 語句

continue

終止本輪循環并開始下一輪循環。

pass 語句

pass

語句的意思是“不做任何事”,如果你在需要有語句的地方不寫任何語句,那麼解釋器會提示出錯,而

pass

語句就是用來解決這些問題的。

主要用法如下

def a_func():
    pass
           
  • pass

    是空語句,不做任何操作,隻起到占位的作用,其作用是為了保持程式結構的完整性。盡管

    pass

    語句不做任何操作,但如果暫時不确定要在一個位置放上什麼樣的代碼,可以先放置一個

    pass

    語句,讓代碼可以正常運作。

推導式

清單推導式

清單推導式的主要用法是對

collection

中的值進行疊代,并對每個值進行運算得到新的值作為表達式的值

示例代碼

x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0]
print(x)
           

運作結果

[3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]

元組推導式

  • 用法與清單推導式類似,隻是生成的是元組

字典推導式

  • 用法與清單推導式類似,隻是有兩個表達式分别為字典的關鍵字和值

集合推導式

  • 用法與清單推導式類似,隻是生成的是集合

next()函數

next()

函數接受一個疊代器,并傳回其下一個疊代值。

示例代碼

e = (i for i in range(10))
print(e)

print(next(e))  
print(next(e))  

for each in e:
    print(each, end=' ')
           

運作結果

<generator object at 0x7f40980ff8e0>

1

2 3 4 5 6 7 8 9