1. 程式人生 > 實用技巧 >python筆記(2)---邏輯分支和迴圈

python筆記(2)---邏輯分支和迴圈

邏輯分支和迴圈

Boolean變數

開始分支和邏輯迴圈的時候不得不提的是boolean變數(布林),boolean變數的值只有兩種取值:0 和 1,0代表假 1代表真,在python中無需宣告一個布林變數,如果是在函式中 return 1或者 return 0的時候 不加說明的話,比如下面的情況:

def fun(num):
    if num>0 :
       return 0
    else:
       return 1
#函式只有兩個返回值 0 和 1,在下面的 不加說明的話 0 和1 會被當作int型別
#但是在下面的情況:
if fun(1):
   '''
   ..code.....
   '''

此時在if條件中 fun(num)的返回值會被當作boolean變數進行對待

邏輯分支語句和迴圈

1.邏輯分支語句

if條件語句是如下的格式:

 if (True):
    '''
		code
    '''
 else:
    '''
    code
		'''

如果上面的括號中的表示式 函式返回值 邏輯判斷(大於 小於 等於 或者組合判斷) 為真的時候就執行下面的code,如果為Fasle的時候就執行else中的code,如果要寫成多分支的語句的時候就採用 if+else的情形,如下所示:

if (condition 1):

elif (condition 2):

elif (condition 3):


要是寫成多分支的時候就採用上面的形式進行判斷,多分支的情況會逐個掃描每一個 condition 如果這個condition為真的話那就執行這個程式碼塊下的內容,其餘程式碼塊的條件都不會發生執行

邏輯連詞是用來連線兩個邏輯條件之間的關係,如果這兩個邏輯條件為真或者為假會讓整個邏輯條件的真假髮生改變,從而可以設定複雜的邏輯判斷條件,也就是if 或者 elif 的condition 部分

  1. and

  2. or

  3. in

  4. not in

  5. 數字關係運算符

    5.1 >

    5.2 ==

    5.3 <


#and 是字面意思且的意思,也就是說如果有多個連線的邏輯表示式比如

a=10
if a>0 and a<100:
    print("OK")

在上面的語句中 a>0 和 a<100都是為真的那麼整個表達是(a>0 and a<100)都是為真的 也就是 and連線的邏輯關係 只要一個假就是假的 全是真的才是真的

or 是或的運算子 對於or和and的區別在於 or連線的邏輯關係只要一個是真的,那整個表示式就是真的,全部是假的時候才是假的

a=100
if a<0 or a>0:
   print("OK")

上面的if條件也是真的,因為a<0雖然為假但是 a>0為真 由於or的連線 整個condition表達是(a<0 or a>0)就是真的

# in 判斷 一個變數是否在一個物件中常被和list連用比如

L=[1,2,3,5,5]
if 1 in L:
   print("OK")
#1在L裡面所以返回的是真

#not in 是不在的意思 和in的返回值恰好相反

補充一種3.8的新特性在if條件語句的使用場景內的玩法:海象表示式":="運算子

L=[1,2,3,4]
if (n:=len(L)) >2:
   print(n)
#這句話的意思就是用len(L)給n賦值,但是n的作用域只有if條件裡面的部分,這樣避免的len()函式多次呼叫帶來的不必要的開銷

注:在if條件中的()可寫可不寫都沒有關係,不會影響程式碼的執行

迴圈

for迴圈

1.基於範圍的for迴圈

基於範圍的for迴圈最簡單的一個例子:

L=[1,2,3,4,5]
for i in range(len(L)):
   print(L[i])

分析上面的程式碼每一次拿到的都是i,而i是列表的資料的下標,並且一定不會越界,說明一下range函式,range()函式有兩個引數,range(start,end)返回一個[start,end)的陣列,從start開始,也可以只傳一個引數,就像我們上面的那樣,預設從0開始: [0,len(L)) 左閉右開的區間

2.基於內容的for迴圈

照樣從一個例子開始:

L=[1,2,3,4]
for d in L:
   print(d)

在上面的for迴圈中每一次拿到的是L中的元素從第一個元素開始到最後一個元素,所以相比於第一個拿到的下標而言稱為基於內容的for迴圈

3.基於內容和範圍的for迴圈

L=[1,2,3,4]
for index,data in enumerate(L):
     print(index,data)

採用了enumerate之後 每一次for迴圈返回的是兩個值,一個是元素的下標,一個是元素的值,也可以理解為1和2的結合體[暫時這樣理解即可]

while 迴圈

while迴圈類似於if語句 不同於for迴圈 while迴圈有迴圈的起始條件,這個起始條件為真的時候才開始迴圈,條件變成假的時候終止迴圈 每一次迴圈結束後都會檢驗條件是否為真

i=10
while(i>0)
{
  i=i-1
}

上面的程式碼在i>0的時候開始進入到while迴圈,每次進入之後i=i-1被執行,緊接著(i>0)條件判斷是否為真為真繼續執行,否則跳出.....重複上述過程就是while迴圈