# python函式與串列 ## 2022/03/18 電算社第四堂社課 --- ### 函式 ---- 類似數學上的函數,可以輸入東東讓它進行操作 ---- 數學 $f(x) = x^2 + x - 1$ python ```python= def f(x): return x ** 2 + x - 1 ``` ---- 函式 ```python= def 函式名稱(參數1, 參數2, ...): ... return 回傳值 ``` ---- 一些舉例 ```python= # 加法 def plus(a, b): return a + b print(plus(3, 5)) # 8 ``` ---- ```python= def judge(a, b, c): d = (a + b + c) / 3 if d >= 60: return "pass" else: return "fail" print(judge(59, 60, 59)) # fail print(judge(59, 60, 61)) # pass ``` ---- ```python= # 雙重迴圈 def plus(a): a += 2 return a def times(a): return plus(a) * 2 print(times(5)) # 14 # 函式順序可以不用管 def times(a): return plus(a) * 2 def plus(a): a += 2 return a print(times(5)) # 14 ``` --- ### 遞迴 ---- 講到遞迴就要提到費波那契數列,就是生一堆兔子的那個:D $a_1 = a_2 = 1, a_n = a_{n - 1} + a_{n - 2}$ ---- ```python= def f(x): if x == 1 or x == 2: return 1 else: return f(x - 1) + f(x - 2) print(f(5)) # 5 print(f(8)) # 21 ``` --- ### 串列list ---- 宣告 ```python= 串列名稱 = ['元素1', '元素2', ...] ``` ---- example: ```python= a = ['a', 'b', 'c'] print(a) # ['a', 'b', 'c'] b = [12, 23, 34] print(b) # [12, 23, 34] ``` ---- 取得元素 ```python= # 取單一元素 print(串列名稱[第幾項]) # 取範圍元素 print(串列名稱[開始項數:結束項數:間隔]) # 取得陣列大小 print(len(串列名稱)) ``` ---- example: ```python= a = [1, 2, 3, 4, 5] print(a[2]) # 3 print(a[-1]) # 5 -> 最後一項 print(a[0:2]) # [1, 2] print(a[:5]) # [1, 2, 3, 4, 5] print(a[2:]) # [3, 4, 5] print(a[0:5:2]) # [1, 3, 5] print(len(a)) # 5 ``` **串列項數由0開始數** **範圍為包頭不包尾** ---- 增加元素 ```python= # 新增到最後 串列名稱.append(新增元素) # 插入元素 串列名稱.insert(位置, 新增元素) ``` ---- example: ```python= a = [] a.append(1) # 1 a.append(3) # 1 3 a.append(7) # 1 3 7 a.insert(1, 5) # 1 5 3 7 print(a) # [1, 5, 3, 7] ``` ---- 移除元素 ```python= 串列名稱.remove(移除的元素) 串列名稱.pop() ``` ---- example: ```python= a = [1, 2, 3, 4, 5] a.remove(4) # 1 2 3 5 a.remove(2) # 1 3 5 print(a.pop()) # 5 -> a = [1, 3] print(a) # [1, 3] ``` ---- for * list ```python= a = [1, 2, 3, 4, 5] for i in range(0, len(a)): print(a[i], end = ' ') # 1 2 3 4 5 print('\n') for i in range(len(a)): print(a[i], end = ' ') # 1 2 3 4 5 print('\n') for i in a: print(i, end = ' ') # 1 2 3 4 5 ``` --- ### 小練習 ---- 在附中冬樂賞的時候,火龍果充滿歡樂與期待的心情前往排隊,結果發現,他太晚來了qwq,只能慢慢地等,但由於隊伍太長看不到盡頭,他需要你幫忙列出隊伍的排列:D ---- **輸入說明:** 輸入一個字串$s$,代表隊伍所做的動作,若$s = line$,則輸入一個整數$k$,代表編號$k$排到隊伍的最後;若$s = in$,代表排頭入場;若$s = out$,則輸入一個整數$k$,代表編號$k$的人離開隊伍;若$s = end$,則結束輸入。 **輸出說明:** 輸出整個隊伍,每個人中間以空白隔開 ---- **範例輸入:** ``` line 1 line 2 line 3 in line 4 out 3 end ``` **範例輸出:** `2 4` ---- 我是防雷頁:D ---- ```python= a = [] s = str(input()) while s != "end": if s == "line": k = int(input()) a.append(k) elif s == "in": a.remove(a[0]) elif s == "out": k = int(input()) a.remove(k) s = str(input()) for i in range(0, len(a)): print(a[i], end = ' ') ```
{"metaMigratedAt":"2023-06-16T20:55:01.531Z","metaMigratedFrom":"YAML","title":"python函式與串列","breaks":true,"slideOptions":"{\"transition\":\"slide\"}","contributors":"[{\"id\":\"68c94489-3c2e-4879-b847-e982f360b03c\",\"add\":3074,\"del\":62}]"}
    204 views