1. 程式人生 > >python基礎03-循環結構及函數基礎

python基礎03-循環結構及函數基礎

特殊用法 block [] 可選 app end range 函數基礎 ber

循環結構及函數基礎

循環結構(for-in)

  • 說明:也是循環結構的一種,經常用於遍歷字符串、列表,元組,字典等

  • 格式:

    for x in y:
      循環體
    

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

  • 示例1:遍歷字符串

    s = ‘I love you more than i can say‘
    for i in s:
        print(i)
    
  • 示例2:遍歷列表

    l = [‘鵝鵝鵝‘, ‘曲項向天歌‘, ‘鋤禾日當午‘, ‘春種一粒粟‘]
    
    for i in l:
        print(i)
    
    # 可以獲取下表,enumerate每次循環可以得到下表及元素
    for
    i, v in enumerate(l): print(i, v)
  • 示例3:遍歷字典

    d = {‘a‘:‘apple‘, ‘b‘:‘banana‘, ‘c‘:‘car‘, ‘d‘: ‘desk‘}
    
    for key in d:
        # 遍歷字典時遍歷的是鍵
        print(key, d.get(key))
    
    # for key, value in d.items():
    # 上下兩種方式等價 d.items() <=> dict.items(d)
    for key, value in dict.items(d):
        print(key, value)
    
  • 列表生成式

    • 可叠代對象:列表、元組、字典等都是可叠代對象,就是可以遍歷的對象
    • range,用法如下:
    print(range(10))
    # 可以生成從0開始到10的連續整數的叠代對象
    print(range(0, 10))
    
    # 可以遍歷
    for i in range(10):
        print(i)
    
    # 強制轉換為列表
    print(list(range(1, 11)))
    
    • 列表生成式:快速生成具有特定規律的列表
    # 列表生成式
    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])
  • 多重循環:就是循環中嵌套循環

    • 示例1:從終端輸入一個整數,打印如下圖形:
    n = int(input(‘請輸入一個整數:‘))
    
    ‘‘‘
    1
    1 2
    1 2 3
    1 2 3 4
    ...
    1 2 3 4 ... n
    ‘‘‘
    
    ‘‘‘
    j = 1
    while j <= n:
        i = 1
        while i <= j:
            print(i, end=‘ ‘)
            i += 1
        print()
        j += 1
    ‘‘‘
    
    for i in range(1, n+1):
        for j in range(1, i+1):
            print(j, end=‘ ‘)
        print()
    
    • 示例2:打印九九乘法表
    for i in range(1, 10):
        for j in range(1, i+1):
            print(‘{}x{}={}‘.format(j, i, j*i), end=‘ ‘)
        print()
    
    • 示例3:列表排序(選擇法)
    l = [1, 9, 4, 2, 0, 8, 3, 7]
    
    # 獲取長度
    n = len(l)
    
    # 外層循環用來控制循環的圈數,每一圈可以確定一個元素的位置
    # 確定n個元素起始只需要n-1圈即可
    for i in range(n-1):
        # 內層循環用來比較大小交換元素,一圈確定一個元素
        for j in range(i+1, n):
            # 如果不合適
            if l[i] > l[j]:
                # 交換兩個變量
                l[i], l[j] = l[j], l[i]
    
    print(l)
    

函數

  • 定義:具有特定功能的一段代碼

  • 優點:

    • 解決代碼的重復書寫問題
    • 可以將功能的實現者和使用者分開,提高開發效率
    • 增加的代碼的可移植性
  • 分類:

    • 庫函數:print、input、abs等
    • 自定義:用戶自己封裝的函數
  • 格式:

    def 函數名([參數列表]):
      函數體
    

    []表示可選,參數可以沒有,也可以有多個。

  • 函數名:

    • 遵循標識符的命名規範(與變量命名相同)
  • 函數調用:

    • 函數定以後不會執行,需要調用才執行
    • 調用:函數名([參數])
  • 示例:

    # 無參無返回值
    def print_hello():
        print(‘Hello‘)
    
    # print_hello()
    
    # 帶參無返回值
    def print_n_hello(n):
      for i in range(n):
              print(‘Hello‘)   
    
    # print_n_hello(5)
    
    # 帶參有返回值
    def add(a, b):
      c = a + b
          # 返回結果
          return c 
    print(add(3, 5))
    
  • 函數參數

    • 形參:形式參數,函數定義處的參數
    • 實參:實際參數,函數調用處的參數
    • 必傳參數:也叫位置參數,前面定義的函數中使用的都是必傳參數,調用時的形式必須要與定義的一致。
    • 默認參數:就是有默認值的參數,必須放在最後
    • 可變長度參數:函數調用時傳遞必定義時的參數要多,多出來的參數會保存在args和kwargs中
    def show(a, b=‘默認值‘):
        # a就是必傳參數
        print(a)
        # b就是默認參數,就是有默認值的參數,必須放在最後
        print(b)
    
    # show(1, 2)
    # 關鍵字參數,傳遞參數的時候指定了名字,順序就無所謂了
    # show(b=456, a=123)
    
    def var_len_args(a, b, name=‘默認名稱‘, *args, **kwargs):
        print(a)
        print(b)
        print(name)
        # args是一個元組,用來存放所有的多出來的位置參數
        print(args)
        # kwargs是一個字典,用來存放所有的多出來的默認參數
        print(kwargs)
    
    var_len_args(1, 2, 3, 4, age=18)  
    
  • *的特殊用法
def show(a, b):
    print(a, b)

l = [1, 2]
# 略顯啰嗦
# show(l[0], l[1])
# 精簡方法
show(*l)


def show2(a=‘aa‘, b=‘bb‘):
    print(a, b)

d = {‘a‘:‘apple‘, ‘b‘:‘banana‘}

# show2(a=d[‘a‘], b=d[‘b‘])
# 上面方式的簡單書寫方法
show2(**d)

python基礎03-循環結構及函數基礎