# Python班
## 12/22社課
----
今日課程
* 遞迴
* print & input
* if
* for
* list
----
## 遞迴
----
遞迴函式是一種自我呼叫的運算型函式
```python=
def f(x):
if x == 1: #終止條件
return 2
return f(x-1)*2
print(f(3))
```
$f(3)$
=$f(2)$ x $2$
=$f(1)$ x $2$ x $2$
=$2$ x $2$ x $2$
=$8$
----
## 練習1
1. 以遞迴函式實作 $n^n(n\in N)$ 計算器
2. 以遞迴函式實作 $n!(n\in N)$ 計算器
----
### 型別
型別指的就是變數的「類型」。大致上有四種。
* 「整數(Integer, int)」
* 「浮點數(Float, float)」
* 「布林值(Boolean value, bool)」
* 「字串(String, str)」
\
每種都有各自可以做的事情。
----
### 變數輸出
```python=
print("Hello crc")
s = "Hello World"
a = 1
print(s,a)
"""
Hello crc
Hello world 1
"""
```
----
### seperate & end
```python=
a=123
s="Hello"
print(a,s,sep="!")
print(a,end="crc")
print(s)
'''
123!Hello
123crcHello
'''
```
----
### 輸入
```python=
a=int(input())
f=float(input())
b=input()
print(a,f,b)
```
Q: b的型別是什麼?
----
### 多個變數同行輸入
```python=
a,b,c=map(int,input().split())
print(a)
print(b)
print(c)
"""
9 2 1
9
2
1
"""
```
## 這很重要可以直接背起來
----
### 練習1
在同一行輸入3個數字後,輸出時以","分隔
----
### if()
```python=
a=int(input())
if(a==1):
print("yes")
elif(a==0):
print("0")
else:
print("no")
```
## 冒號很重要,記得要縮排
----
### 練習2
在同一行輸入3個數字後,由大到小輸出並以","分隔
----
### for迴圈
```python=
for i in range(3):
print("Merry Christmas!")
print(i)
'''
Merry Christmas!
0
Merry Christmas!
1
Merry Christmas!
2
'''
```
## 注意:起始值為0並指會執行到i-1
----
### 設定迴圈的各項數值
```python=
for i in range (s,e,k):
# s為開始數字
# e為結束數字
# 若i==e,不會執行
# k為每次加減多少
```
----
### while迴圈
```python=
a=10
b=20
while(b>=a):
print(b,a)
b-=2
# 20 10
# 18 10
# 16 10
# 14 10
# 12 10
# 10 10
```
## 搭配條件判斷的迴圈
----
### break & continue
```python=
for i in range(10):
if (i==5):
break
print(i)
# 0
# 1
# 2
# 3
# 4
```
break ----直接中斷迴圈
且break後面的程式碼都不會執行
----
```python=
for i in range(10):
if (i==5):
continue
print(i)
# 0
# 1
# 2
# 3
# 4
# 6
# 7
# 8
# 9
```
continue ----跳過continue以後的程式碼
直接跳到下一次迴圈
----
### 巢狀迴圈
```python=
for i in range(3):
for j in range(3):
print(i,j)
'''
0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2
'''
```
## 小迴圈執行一輪後,i才會+1
----
### 練習3
熟悉的99乘法表,再做一次吧!
----
### 串列
```python=
list1=[1,2,3]
print(list1)
list1.append(10)
print(list1)
list1.pop(0)
print(list1)
'''
[1, 2, 3]
[1, 2, 3, 10]
[2, 3, 10]
'''
```
----
### for & list
```python=
LIST = [1,2,3,4]
for i in LIST:
print(i)
'''
Output
1
2
3
4
'''
```
----
### list input
```python=
list1=list(map(int,input().split()))
for i in list1:
print(i)
```
----
### 二維串列
```python=
list1=[[1,2,3,4],[11,22,33,44],[111,222,333,444]]
for i in list1:
print(i)
for i in list1:
for j in i:
print(j)
'''
[1, 2, 3, 4]
[11, 22, 33, 44]
[111, 222, 333, 444]
1
2
3
4
11
22
33
44
111
222
333
444
'''
```
----
### 練習4
輸入一個串列(整數組成),幫我輸出,全部的總和,最大的數字和最小的數字。
{"description":"type: slide","title":"12/22","contributors":"[{\"id\":\"8447d62f-b77b-4e5c-80cf-0392360451ef\",\"add\":2991,\"del\":8337},{\"id\":\"e0c7dab8-be31-4e15-a8e7-22968131e3e1\",\"add\":1252,\"del\":13}]"}