python是近年來快速崛起的語言
python是個直譯式的語言,你可以把他想像成一行一行的命令,程式語言中我們習慣叫他腳本,寫一行,電腦執行一行。
他是一個高階語言。這邊的高階不是一般意義上的高等低等。而是再電腦科學中,我們會把電腦語言分成多個層級。簡單來說,底層接近機器語言,效率高同時難懂。上層接近自然語言,人類易懂易學。
為python的擴展性極好,世界上許多人在使用python的同時也再開發其功能,為python開發了大量的工具,又或者是將其他語言的函式庫移植至python。
- 數據分析工具: Pandas
- HTTP工具: Requests
- 基於matlab的繪圖工具: Matplotlib
- 科學計算工具: scipy, numpy
- 深度學習工具: Tensorflow
anaconda 連結:https://www.anaconda.com/products/individual
windows用戶請注意電腦位元數
首先第一個動作,我們試著在python中宣告變數。
宣告變數,
什麼是變數?變數就是你的資料在程式語言中存在的形式。它們有不同的形式,分別滿足不同的需求,像是「整數」、「小數」、「列表」……等,我會陸陸續續的介紹。
而宣告變數,指的就是我告訴電腦「我需要一塊儲存空間,用來紀錄我要寫入的這個變數」。
變數需要有一個名稱,基本上除了python的保留字以外都是可以取的名字,不過方便起見我們常用英文加上底線來取名,像是counter, length_of_list, graduate_year…
怎麼知道是不是保留字?
只要打在spyder裏面會自動變色的,就是保留字。
顧名思義,就是整數。
print()
內建函式,用於印出資料。
type()
是內建函式,用來取得變數的型態。
我們可以用運算子讓變數彼此互動,這裡是常見的數學運算子。
一直以來在用的=
也是一種運算子,叫作「設定運算子」,功能是把右邊的變數指派給左邊。
浮點數是電腦儲存、計算小數的一種方法。
布林邏輯是電腦科學裡一個重要的代數系統。
在python中,我們用True
以及False
來表達邏輯真假。
使用條件語句>, <, ==, >=, <=, !=, not
來生成。
python會自動辨識變數,以將其用最好的型態儲存。
如果想要把一個變數轉成另一個資料型態,可以使用轉型。這些能把變數轉換成其他資料型態。
除了0以外,所有的數字,都是邏輯真
除了一個一個的數字,我們需要更有效率的作法來存取一整筆的資料,這時候python的序列就派上用場了。
列表使用中括號來宣告,裏面每個欄位都可以放上不同資料型態的變數,甚至可以把列表放在列表裡。
在這次的作業會用到。
可以顯示資料長度的方法
列表的索引是從0開始,所以如果你未來會很常聽到第0項這個說法,這需要一些時間來習慣。
你可以隨時改變列表裡的值。負號代表倒數第n個元素。
可以使用冒號來連續取得列表中的元素。
如果把一個列表乘以二,代表重複兩次。
可以使用len()
函式來取的列表的長度,也就是元素的數量。
要注意一個長度為n
的列表,最後一項其實是第(n-1)
項。
使用append函式
元祖跟列表很像,唯一的差別是他無法改變。不管是長度或是裡面的元素。
使用括號來宣告。
但是如果元祖裏面有一個列表,改動那個列表的元素是合法的。
字串用來儲存一連串的文字,用單雙括號來宣告。
因為字串也是序列的一種,所以也可以索引。
字串的元素也是不可變的。
字串可以用+
來連接。
字典是一個映射。他將鍵值(key)應射到另外一塊記憶體位置來儲存資料。
使用{key1:value1, key2:value2}
來做宣告。
可以隨時新增鍵值,只要直接指派就可以了。
使用鍵值索引
可以使用keys()方法來知道有哪些鍵值。
也可以使用in
來確認一個key是否存在
程式就像腳本一樣,是由上而下逐行執行的。
但是如果只是這樣的話,那麼在實務上會很難應用他。所以有所謂的流程控制。
使用一些條件(statement)去做判斷,使得程式分支來應對所有狀況。
這些陳述句有「if else」、「while loop」、「for loop」。
if條件式會在「條件滿足」的情況下,執行內部區塊。否則跳過。
While迴圈會在「條件滿足」的情況下,重複執行內部區塊。
鍵盤壓住 crtl
+ c
比較看看,上下兩者會有什麼差別?
for迴圈是程式語言中更常出現的種類,我個人喜歡把他想像成遍歷,按照順序一個一個的造訪。
執行以下程式碼,可以很快的理解他。
range是python的內建函式,搭配for迴圈來生成連續的數字,常用的方法有三種。
程式語言中,函式就像是一個「功能」,print()
函式是列印的功能,int()
函式是把變數轉換為整數的功能,type()
函式是取得變數型態的功能。
除了這些內建的函式,你也可以自己定義函式。
使用def
來定義函式
小括號裡的x
叫作引數,是函式為了達到功能必須要用的資料,就像我今天希望有個函式可以幫我把數字平方,我就必須告訴這個函式這個數字是什麼。
函式可以return(回傳)資料,也可以不。
再我們定義完函式之後,就可以呼叫它了。
在呼叫函式的時候,我們把眼光轉移到函數的定義,我們將a作為square函式的第一個引數x
傳入,這時候這個x
就會是我們傳入的a
,也就是4
,接下來回傳一個16並結束函式。
回到呼叫的那一行,b會被設定為square函數的回傳值。也就是16。
透過函式,我們可以很有效率的重複使用同一段的程式碼,並且讓程式更可讀。
不要重複造輪子
作業很明顯跟同學一模一樣的學生下課來找我
助教
如果我們寫程式時,必須將所有內容寫在同一個檔案裡,那麼程式就會又臭又長,既不美觀又難整理。這時候我們就會把程式碼按照功能分開為各個模組,需要時再從其他檔案引入就好了。
模組內可以有函式,變數。
python有很多內建的模組,這裡舉幾個例子。
我們這邊先不學怎麼建立模組,會再之後的課程提到。
做出一個函式,叫作duplicate(),
功能是輸入a, b
兩個列表,他要輸出一個包含重複元素的列表。
將下列日期按照[[YYYY/MM/DD],...]
格式重新整理
Answer: