# 基隆xAUV Python簡介
###### tags: `基隆` `PYTHON`

## python 的互動模式

## python 檔案與執行
- `python3 filname.py` 執行 python 檔
## vim 使用
> ### 甚麼是vim
- vim 是一種純文字模式下的編輯軟體
- 在 terminal 輸入 `vim fileName.py` 可查看文字內容或新增檔案
> ### vim 指令說明
* `i` :進入編輯模式
* `a` :在游標位置後進入編輯模式
* `Esc` :取消指令或退出編輯模式
* `:<行數>` :跳至第幾行
* `:wq` :儲存並退出
* `:q!` :不儲存強制退出
* `dNd` :從游標開始刪除N行
* `V` :選擇整行
* `v` :選擇游標範圍
* `y` :複製選取範圍
* `p` :貼上剪貼簿內容
* `u` :還原上一步
## python I/O
```python=
print('hello' , 'world' + '123', end = '')
print('*'*(10))
string = input('type an string: ')
```
## 資料型態
> 整數 (int)
- 1, 2, 3, 4
- -1, -2, -3, -4
> 浮點數 (float)
- 1, 1.1, 1.2
- -1.2, -1.3
> 布林
- True
- False
> 字串 (str)
- name
- 123
> 清單 (list)
- [1, 2, 3]
- [1, 2, 3, name, 1.2]
> 強制轉型
```python=
i = int()
i = 1
print(type(i))
print(type(str(i)))
```
## 變數
> ### 變數宣告
```python=
i = int()
i = 1
s = str()
s = '123'
b = bool()
b = True
a = []
a = [1, 2, 3]
```
## python 運算子
* 與C語言比較
|運算子| C | python |
| -------- | -------- | -------- |
| 加 | + | + |
| 減 | - | - |
| 乘 | * | * |
| 除 | / | / (//) |
| 取餘數 | % | % |
| 乘冪 | pow() | ** |
| 單行註解 | // | # |
* python2 : ```<int>/<int>```為整數除法,與C的結果相同
* python3 : ```<int>/<int>``` : 若無法整除,會自動轉成float。若不想自動轉型,要用```<int>//<int>```
## python的list
* python中沒有陣列,只有list,不過list比C的array更強大,它可以自由改變長度,也可以容許在同一個list裡放不同型態的變數
* ```a=[]``` : 空的list
* ```a=[1, 2, 3]``` : list初始化
* ```a[索引值]``` : list成員讀取
* ```len(a)``` : 回傳list的長度
* ```a.append``` : 在尾端加入成員
* ```a.extend``` : 在尾端接收另一個list
----
## range
* 產生一個整數的等差數列存
* 語法:range(start, stop, step)
* start:起始值(可省略,預設值為0)
* stop:中止值
* step:增值(可省略,預設值為1)
* 注意range範圍是**≧start, <stop**
* 檢視方法,轉成list
* Ex:
``` python=
t=range(0, 6, 2)
a=list(t) #a=[0, 2, 4]
```
## 判斷句
* `>`:大於
* `<`:小於
* `>=`:大於或等於
* `<=`:小於或等於
* `==`:等於(vs=:指派)
* `!=`:不等於
* `and`:且
* `or`:或
* `not`:非(真假對調)
* 這些在python裡也是可以用的
```python=
x=10
y=20
print(x is y)
print(x is not y)
print(x <= 5 and y <= 5)
print(x <= 5 or y <= 5)
print("C" in "Python")
print("C" in "C++")
```
* 範例
```python=
mood = "happy"
if mood is "happy":
print("^_^")
elif mood is "normal":
print("-_-")
elif mood is "sad":
print("Q_Q")
```
---
## 迴圈
## for迴圈
:::info
for <迭代變數> in <可迭代變數>:
<縮排><其他程式>
:::
* python
```python=
for i in range(2, 10, 2):
print(i)
```
```python=
data=[]
for i in range(10):
data.append(i**2)
print(data)
```
* 列出1~a,是2或3的倍數但不是6的倍數的所有整數。
```python=
a=10
for i in range(1, a+1):
if i%2 == 0 or i%3 == 0:
if i%6 == 0:
pass
else:
print(i)
```
## while迴圈
:::info
while <判斷句>:
<縮排><其他程式>
:::
* python
```python=
a = 10
while a > 0:
print(a)
a-=1
```
---
## 自定義函式
:::info
def <函數名稱>(<變數1>, <變數2>…):
<縮排><函數內容>
:::
* 範例
```python=
def f(x):
ans = 5*x**2-3*x-11
return ans
a = f(9)
print(a)
```
## Lab

```python=
n = int()
while True:
n = input()
n = int(n)
for i in range(n):
if i < n/2:
print(" "*((n - 1)//2 - i) + "*"*int((n/2 - (n - 1)//2 + i)*2))
else:
print(" "*(i - n//2) + "*"*(n - (i - n//2) * 2))
```
## numpy
:::info
The fundamental package for scientific computing with Python
:::
* 安裝
> If you use pip, you can install NumPy with:
```
pip install numpy
```
> If you use conda, you can install NumPy from the defaults or conda-forge channels:
```
conda create -n my-env
conda activate my-env
conda config --env --add channels conda-forge
conda install numpy
```
* 教學
- https://colab.research.google.com/github/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/02.02-The-Basics-Of-NumPy-Arrays.ipynb
## matplotlib
* 安裝
```
python -m pip install -U pip
python -m pip install -U matplotlib
```
* 教學
- https://colab.research.google.com/github/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/04.00-Introduction-To-Matplotlib.ipynb