# 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}]"}