# Python
自己看的Python的小筆記
沒很詳細:)
## 資源
[AP325講義C++(中正大學 吳邦一教授)](https://jmj.cmgsh.tp.edu.tw/files/AP325_v1.3.pdf)
[AP325講義Python(中正大學 吳邦一教授)](https://hackmd.io/@bangyewu/Hy2kbYLI6/%2Fg2kqHh5_Q4eQnz-mfNu3Kw)
[w3schools(Python)](https://www.w3schools.com/python/default.asp)
## 註解
註釋可用於解釋Python代碼。
```python!=
#This is a comment
print("Hello, World!")
```
## print
```python!=
print("Hello World")
```
輸出
```
Hello World
```
如果要換行要加上`\n`。
```python!=
print("Hello\nWorld")
```
```
Hello
World
```
如果要輸出List且以空格間隔的元素
前面加上`*`
```
print(*results)
```
## input
常見用法,預設為字串(str)。
```python!=
n = input()
```
可以加上int變成整數
```python!=
n = int(input())
```
## 變數(Variables)
變數是用於存儲數據值的容器。
Python沒有用於聲明變數的命令。
變數在您首次為其分配值時創建。
```python!=
x = 5
print(x)
```
變數不需要使用任何特定類型聲明,可以在設置後更改類型。
```python!=
x = 4
x = "Sally"
print(x)
```
如果要指定變數的數據類型,可以通過轉換來完成。
```python!=
x = str(3)
y = int(3)
z = float(3)
```
可以在一行為多個變數賦予值。
```python!=
x, y, z = "Orange", "Banana", "Cherry"
print(x)
print(y)
print(z)
```
可以在`print`輸出變數的值。
```python!=
x = "Python is awesome"
print(x)
```
如果需要多個,以`,`隔開。
```python!=
x = "Python"
y = "is"
z = "awesome"
print(x, y, z)
```
亦可以使用`+`
```python!=
x = "Python "
y = "is "
z = "awesome"
print(x + y + z)
```
在函數外部創建的變數(如所有範例中所示 )稱為全域變數。
全域變數可以被所有人使用。
```python!=
x = "uu"
def main():
print("Say " + x)
main()
```
### global
通常,當您在函數中創建變數時,該變數為local,並且只能在該函數中使用。
要在函數內創建全域變數,可以使用關鍵字`global`。
```python!=
def main():
global x
x = "uu"
print("Say " + x)
main()
```
## 數據類型(Data Types)
文字類型:`str`
數值類型:`int` ,`float complex`
序列類型:`list` ,`tuplerange`
映射類型:`dict`
Set 型態:`set`,`frozenset`
布林類型:`bool`
二進位類型:`bytes`, `bytearray memoryview`
無類型:`NoneType`
但事實上常用的只有`str`,`int`,`float`,`list`,`bool`
### bool
當中含有`true`及`false`
您可以在 Python 中計算任何運算式,並獲取兩個表達式之一 ans,或`True` `False`
當您比較兩個值時,將計算表達式,並且 Python 返回 布林答案:
```python!=
print(10 > 9)
print(10 == 9)
print(10 < 9)
```
會印出
```
True
False
False
```
## 運算子
Python 將運算符分為以下幾組:
1. 算術運算子
2. 賦值運算子
3. 比較運算
4. 邏輯運算子
5. 標識運算符
6. 成員資格運算符
7. 按位運算子
### 算術運算子
| 符號 | 意思| 如同 |
| -------- | -------- | -------- |
| `+` |加 | `x + y` |
|`-`|減|`x - y`|
|`*`|乘|`x * y`|
|`/`|有小數點的除法|`x / y`|
|`%`|餘數|`x % y` |
|`**`| 次方| `x ** y `|
|`//`| 沒有小數點的除法| `x // y`|
### 賦值運算符
| 符號 | 例如 | 如同 |
| -------- | -------- | -------- |
|`=`|`x = 5`|`x = 5`|
|`+=`|`x += 3`|`x = x + 3`|
|`-=`|`x -= 3`|`x = x - 3`|
|`*= `|`x *= 3`|`x = x * 3`|
|`/=`|`x /= 3`|`x = x / 3`|
|`:=`|`print(x := 3)`|`x = 3`,`print(x)`
### 比較運算符
| 符號|意思 |
| -------- | -------- |
| `==` | 等於 |
| `!=` | 不等於 |
| `>` |大於 |
| `<` | 小於 |
| `>=` |大於等於|
| `<=` | 小於等於 |
## List
第一項的索引為 0。
`-1`指最後一項,`-2`指倒數第二項,以此類推。
要確定清單包含多少項,請使用`len()`函數。
```python!=
thislist = ["apple", "banana", "cherry"]
print(len(thislist)) #output 3
```
要插入新的清單項,而不替換任何現有值,我們可以使用`insert()`。
```python!=
thislist.insert(1, "orange")
```
可以通過指定開始位置和位置來指定索引範圍 end 範圍。
搜索將從索引 2(包含)開始,到索引 5(不包括)結束
```python!=
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[2:5])
```
刪除指定的項,使用`remove()`。
```python!=
thislist.remove("banana")
```
刪除指定索引`pop()`,如果括號內沒有填任何索引,將刪除最後一項。
```python!=
thislist.pop(1) #刪除指定項
thislist.pop() #刪除最後一項
```
刪除指定的指數或完全刪除清單`del`。
```python!=
del thislist[0]
del thislist
```
清空清單`clear()`。
該清單仍然存在,但沒有內容。
```python!=
thislist.clear()
```
### 循環清單
While
使用該函數確定清單的長度, 然後從 0 開始,通過引用清單項的索引來迴圈存取清單項。
請記住在每次反覆運算後將索引增加 1。
```python!=
thislist = ["apple", "banana", "cherry"]
i = 0
while i < len(thislist):
print(thislist[i])
i = i + 1
```
### 列表推導式
#### for
簡短的語法
```python!=
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
```
可以改成
```python!=
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x for x in fruits if "a" in x]
print(newlist)
```
### 排序
預設情況下,List 物件有一個按字母數位升序對陣列進行排序的方法`sort()`。
```python!=
thislist.sort()
```
如果要降序使用keyword參數`reverse = True`。
```python!=
thislist.sort(reverse = True)
```
反轉陣列項目的順序`reverse()`。
### 複製陣列
使用`copy()`方法
```python!=
mylist = thislist.copy()
```
### 總結
| 函數|描述 |
| -------- | -------- |
| append() | 將元素添加到陣列末尾。 |
| clear()| 刪除陣列中的所有元素 |
| copy() | 回傳複製的陣列
| count() | 計算指定值在陣列中出現的次數。 |
| extend() | 將另一個可迭代物件的所有元素添加到陣列末尾。 |
| index() | 返回指定值第一次出現的索引。 |
| insert() | 在指定位置插入元素。 |
| pop() | 移除指定索引位置的元素並返回該元素(默認為最後一個)。 |
| remove() | 移除陣列中第一個匹配的指定值。 |
|reverse() |將陣列中的元素順序反轉。 |
| sort() | 對陣列中的元素進行排序。 |
## 常用的
輸入多個數字以空格隔開並轉成陣列
```python!=
n = list(map(int,input().split()))
```
輸出一個陣列且以空格隔開
```python!=
for h in ans_list:
print(" ".join(map(str,h)))
```