python 運算符與分支結構

運算符

  • 賦值運算符

    • 用’='表示,左邊只能是變量
  • 算術運算符

    • +、-、*:加、減、乘
    • /:除法運算,結果是浮點型
    • //:除法運算,結果是整型
    • %:求餘
    • **:求冪
  • 複合運算符

    • +=、-=、*=、/=、//=、%=、**=
    • 示例:a = a+b 等價於 a += b
  • 關係運算符

    • >、<、==、>=、<=、!=
    • 表達式:由操作數和運算符構成的式子
    • 關係表達式:由操作數和關係運算符構成的式子
    • 關係表達式是有值的:符合數學邏輯值爲真(True),不符合數學邏輯值爲假(False)
  • 邏輯運算符

    • 與(and):兩邊的表達式同時爲真,結果才爲真

      a = 20
      print(a >= 0 and a <= 100)
      # python特有的寫法
      print(0 <= a <= 100)
      b = 10
      print(b%3==0 and b%5==0)
      
    • 或(or):兩邊的表達式一個爲真,結果就爲真

      # 判斷閏年
      year = int(input('請輸入一個年份:'))
      print((year%4==0 and year%100!=0) or (year%400==0))
      
    • 非(not):用於取反表達式,真變假,假變真

      • 邏輯非經常伴隨着隱式類型轉換
      • 很多時候是爲簡化表達式的書寫
  • 成員運算符

    • in、not in:判斷一個變量是否在/不在另一個變量中

    • 一般用在字符串、列表、元組、集合、字典等成員的判斷

    • 示例:

      lt = [1, 2, 3]
      print('in:', 8 in lt)
      print('not in:', 8 not in lt)
      
      d = {'name': 'xiaoming', 'age': 20}
      # 字典:判斷鍵是否存在
      print('name' in d)
      
  • 位運算符(瞭解)

    • &:按位與,對應的數據位同時爲1,結果才爲1

      0b1010
      0b1100   &
      -----------
      0b1000
      
    • |:按位或,對應的數據位一個爲1,結果就爲1

    • ^:按位異或,對應的數據位相同時值爲0,不同時值爲1

    • ~:按位取反,對應的數據位,1變0,0變1

    • <<:按位左移,左移一位相當於乘2

    • 》:按位右移,右移一位相當於除2

  • 優先級與結合性

    • python語法中沒有明確規定運算符的優先級與結合性,即使提供了明確說明你也不一定能記住
    • 建議:使用時不用刻意記錄運算符的優先級與結合性問題,實在不行添加()即可解決

流程控制

  • 說明:

    • 按照程序的執行流程,程序可以分爲三種結構:順序結構、分支結構、循環結構
    • 順序結構:就是代碼按照從上到下的順序依次執行,沒有語法要求
    • 代碼層次:python中代碼塊不適於大括號區分,而是使用縮進來完成

分支結構(if-else)

- 格式1:適合於選擇執行的情況

```python
if 表達式:
	語句塊
```

> 執行流程:當程序執行到if語句時,首先判斷表達式的真假。若表達式的值爲真,則執行對應的語句塊;若表達式的值爲假,則跳過語句塊,之後後面的內容

- 格式2:適合於解決生活中非此即彼的問題

```python
if 表達式:
	語句塊1
else:
	語句塊2
```

> 執行流程:當程序執行到if-else語句時,首先判斷表達式的真假。若表達式的值爲,則執行語句塊1;若表達式的值爲假,則執行else後面的語句塊(語句塊2)。

- 格式3:適合於解決生活中多種選擇的問題

```python
if 表達式1:
	語句塊1
elif 表達式2:
	語句塊2
。。。
else:
	語句塊
```

> 1. elif的個數沒有限制
> 2. else可以省略不寫
> 3. 每一部分的語句塊都不可能同時執行,最多執行一個

循環結構(while)

  • 格式

    while 表達式:
    	語句塊
    

    執行流程:當程序執行到while語句時,首先判斷表達式的真假。若表達式的值爲真,則執行對應的語句塊,之後返回while繼續判斷表達式的真假;若表達式的值爲假,則跳過語句塊,跳過while。

  • 說明:

    • 表達式:也叫循環條件
    • 語句塊:也叫循環體
    • 死循環:表達式的值一直爲真,稱爲死循環
    • break:結束循環的執行(立即跳出循環)
    • continue:結束本次循環,直接進入下次循環
    • else:結合while使用
    i = 1
    while i <= 10:
        print(i)
        i += 1
        break
    else:
        # 循環正常退出會執行,非正常(break)退出時不會執行
        print('while正常結束')
    

循環結構(for-in)

  • 說明:也是一種循環結構,常用於遍歷可迭代的對象,如:字符串、列表、元組、字典、集合

  • 格式:

    for x in y:
    	循環體
    

    執行流程:x依次表示y中的一個元素,遍歷完所有元素後結束循環。

  • 示例:遍歷字符串、列表、字典

列表生成式

  • 可迭代對象:列表、元組、字典等都是可迭代對象,可以遍歷的對象

  • range函數:

    print(range(10))
    print(range(0, 10))
    
    # range保存的是範圍內的連續整數的生成方式
    # 可以遍歷
    for i in range(10):
        print(i)
    
    # 可以轉換爲列表
    lt = list(range(10))
    print(lt)
    
  • 列表生成式:可以快速生成有特定規律的列表

    # print([i for i in range(1, 11)])
    # print([i*2 for i in range(1, 11)])
    # print([i*i for i in range(1, 11)])
    # print([str(i) for i in range(1, 11)])
    print([i for i in range(1, 11) if i%2==0])
    

循環的嵌套

  • 示例:

    '''
    從終端輸入一個整數n,打印如下圖形
    1
    1 2
    1 2 3
    1 2 3 4
    ...
    1 2 3 4 ... n
    '''
    
    # 外層循環控制打印多少行
    i = 1
    while i < n+1:
        # 內層循環控制每一行的打印
        j = 1
        while j <= i:
            print(j, end='')
            j += 1
        i += 1
        print()
       
    

雙重循環

  • 冒泡排序

    lt = [1, 5, 7, 3, 2, 4]
    
    # 計算元素的個數
    n = len(lt)
    # 外層循環控制圈數
    for i in range(n-1):
        for j in range(n-1-i):
            # 不合適,交換數據
            # 此處是升序排序,若想降序需要將 > 改爲 <
            if lt[j] > lt[j+1]:
                # 其他語言
                # temp = lt[j]
                # lt[j] = lt[j+1]
                # lt[j+1] = temp
                # python特有
                lt[j], lt[j+1] = lt[j+1], lt[j]
    
    print(lt)
    
  • 選擇排序

    思想:
    	取出第一個元素,依次與後面的元素進行比較,不合適交換位置,直至比較結束,一輪可以確定開頭一個
    	每輪確定一個元素,依次向後,n個元素需要n-1輪比較
    lt = [1, 4, 2, 8, 6, 5]
    n = len(lt)
    for i in range(n-1):
        for j in range(1+i,n):
            if lt[i] > lt[j]:
                lt[i], lt[j] = lt[j], lt[i]
    print(lt)
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章