# 2021資訊之芽北區Python
## **課程資訊**https://tw-csie-sprout.github.io/py2021/#!index.md
## [匿名提問](https://www.sli.do)(5/9)密碼:835029
## [大作業說明](https://hackmd.io/J8l8vuQKSqSBpXJidpM0sA?view)
### 開發環境:
1.Anaconda
一堆套件
2.jupyter notebook
測試程式的好工具
先裝了再說
### 基礎語法:
1.輸出 print(x)
print(x, y, sep= , end= ) 連續輸出
(sep:中間用什麼隔開 預設為空格
end:最後再輸出什麼 預設為換行)
2.跳脫字元
\" 輸出"
\' 輸出'
\n 換行
\t tab
\b backspace
3.type(x)
查看x的資料型態
4.a, b = b, a
a b 互換
5.輸入
x = input(A)
輸出A,再讓你輸入x的值
input().split() 連續輸入(split括號內代表中間以什麼隔開 預設為空格)
6.help(x)
顯示x的說明
### 比較運算子:
1.>、<
2.== 等於
3.>=、<=
4.!= 不等於
### 資料型態:
1.int integer整數
2.float 浮點數
3.bool boolean布林值
True/False
4.str string字串
5.dict dictionary
### 運算子:
1.+ 加
2.- 減
3.* 乘
4./ 除
5.** 次方
6.// 求商
7.% 求餘數
### 形別轉換:
A(x) 把x的型別轉成型別A
## 邏輯
### 邏輯運算子:
1.not
A = True
not A = False
2.and
True and True = True
others = False
3.or
False or False = False
others = True
4.xor
A xor B
AB相同 = True
AB不同 = False
### if
if 條件句 :
內容(要縮排)
elif 條件句 :
內容(要縮排)
else :
內容(要縮排)
條件句太長可以用"\"換行
### Boolean:
如果條件句不是BOLEAN 會被強制型態轉換成BOOLEAN
簡單來說 把那個變數以布林處理
### 狄摩根定理:
not(A and/or B) = (not A) or/and (not B)
### 迴圈
#### while:
while 條件句:
內容
else :(條件句為非時執行)
內容
break:跳出迴圈
continue:跳過這一次(直接回到條件句)
#### for:
for i in range(起始值, 做到小於多少):
內容
else: (完整跑完後執行,有break就不會執行)
內容
break:跳出迴圈
continue:跳過這一次(i自動+1)
### list:
len(list):list長度
list[i]:存取第幾個 (0<=i<長度, -長度<i<=-1)
#### add:
list.append(obj):在後面加入obj
list.insert(index, obj):在index前面加入obj
list.extend(list2):在後面加入list2
#### delete:
list.pop(index):把list[index]拔掉並遞補
list.remove(obj):把第一個出現的obj拔掉並遞補
list.clear():清空
#### sort:
list.sort():由小到大排序
list.reverse():反轉
list.sort(reverse=True):由大到小排序
#### traversal:
for i in list:
直接遊歷value,不能改值
for i in range(len(list)):
遊歷index,可以改值
for i, j in enumerate(list):
同時遊歷兩者
#### function
max(a)
min(a)
sum(a)
map(function,a)
把A裡面的每個元素都傳進函式一次然後回傳一次新的list
sorted(a):回傳一個排序好的list,不會影響原本的list
#### copy
list.copy()
#### slicing切片
list[start:end:step]
start:起點
end:終點(不包含)
step:每次加幾
### string
#### 運算
+:連起來
*:重複幾遍
==:等於
!=:不等於
比大小:比字典序
#### Function(都不會更改原本的字串 而是回傳一個新字串)
list.replace():取代 不會遞回取代(只跑一次) 可以重複跑很多次
list.strip():去除頭尾的空白或指定的字元
list.find(目標, 起點預設0, 終點預設長度):尋找並回傳第一個找到的位置
list.split("分割處"):分割字串
list.join("a", "b", "c"):把a,b,c用list黏起來
list.upper():變大寫
list.lower():變小寫
list.isdigit():判斷是否是數字
#### format string
"{}*{}={}".format(i, j, i*j)
### dictionary
一種資料型態
dictionary:key=>value(list:index=>value)
用大括號包起來
### function
def函數名稱(parameter參數):
函數內容
函數名稱(argument引數):呼叫該函數
#### parameter&arguments
變數不會更改原本的值,但如果型態是 list, dict, set 等,則會改到原本的值
#### 回傳值(return)
return 之後 function 就會終止,後面的東西都不會執行
### Import
直接利用別人寫好的程式碼
大型檔案間直接聯繫的橋樑
#### 使用方法
import ___ :直接導入
import ___ as ___:自訂名稱導入
from ___ import ___:導入一特定函式
from ___ import:導入(能直接使用,不須加.在後面)(不建議使用)
#### 常用模組
math
numpy
pandas
matplotiib
sys
#### 慣例
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import pygame as pg
#### math 相關
gcd():最大公因數
ceil()/floor():上下高斯
pow()/sqrt():次方 平方根
log(x)/exp/log2(x):對數
sin(x)/cos(x)arccos(x)/tanh(x):三角函數 反三角函數 雙曲函數
pi/e:常數
factorial(n):階乘
#### string 相關
ascii_lowercase:小寫
ascii_uppercase:大寫
digits:數字
punctuation:標點符號
#### random
random:<0<=1的浮點數
uniform(a, b):<a<b之間的浮點數
randint(a, b):<a<b之間的整數
choice(x):從list x中挑一個
shuffle(x):重排list x中的元素
#### os
getcwd() : 取得當前目錄
listdir( ) : 列出目錄底下的檔案
path.join( ) : 組合成完整路徑名
path.exists( ) : 檢查是否存在
remove( ) : 刪除檔案
#### sys
argv:命令列的參數(list)
version:python版本
platform:操作系統平台名稱
stdout:標準輸出
#### time
time():從1970/1/1 00:00到現在的秒數
sleep(s):暫停幾秒
localtime():當地時間
asctime():格式化時間
#### datetime
datetime.now():現在時間
date.today():今天日期
timedelta(時間=時間單位):時間間隔
#### 自製
1.寫一個py檔
2.在另一個py檔中import它(兩檔案須在同一路徑中)
#### file I/O
input:打開檔案時
output:儲存檔案時
#### 檔案
文字檔:html,txt
二進位檔:png,zip,docx
#### 路徑
絕對路徑:從最上面目錄開始
相對路徑:從自身位置出發
#### 開檔
### 開檔模式
r:只能讀
w:只能寫
a:寫在最後面
r+:
w+:
a+:
#### 關檔
關檔之前檔案不會被寫入(可用flush解決)
易佔記憶體空間
#### 常用寫法
with open([file_name],'r/a/w') as [file_object]: