哈囉!這次來發一些關於 Python 的教學文章,會有這個系列文,主要是因為前陣子接了一個家教,就順便把辛苦整理的自編講義一起放上來了,內容雖然不深,但也涵蓋了初學 Python 所會碰到的各主題,若完全對 Python 不了解的話,這個系列文應該可以給你一些概念,完成後若想再自我進修也能大概有個方向。

此系列文預計會分十篇左右,內容涵蓋基礎語法、迴圈、函數、套件、類別等等主題,皆有範例程式碼可以參考,基本內容都會涵蓋到,不過因為我原本是做講義用,文字部分不會太詳盡。另外,雖然公開在網路上,但希望各位轉載還是標註一下來源,畢竟也是我辛辛苦苦整理的心血呢。最後,有興趣的話,我還有在接學生(偷打廣告 XD)。

HackMD 完整版請點我

Overview

程式語言分為高階語言、組合語言、機器語言等等,Python屬於高階語言的一種。機器語言與組合語言直接控制電腦硬體,但難以閱讀與開發;高階語言易於閱讀與開發,但需要「翻譯」給電腦聽。

來自 Python 官方網站的介紹:
Python 是一種易學、功能強大的程式語言。它有高效能的高階資料結構,也有簡單但有效的方法去實現物件導向程式設計。Python 優雅的語法和動態型別,結合其直譯特性,使它成為眾多領域和大多數平臺上,撰寫腳本和快速開發應用程式的理想語言。

常見應用:網站開發、資料分析、機器學習、遊戲開發、網路爬蟲…
其他語言:C、C++、R、Java、JavaScript、SQL、Go、Ruby……

學習地圖

以臺大資工系必修為例:

以臺大資管系必修為例:

Python 入門

環境建置

  • 互動模式
    • Open Terminal(終端機) and input ‘python’
    • Execute each line directly
    • If Python is not installed, go to Python official website
1
2
>>> 1 + 2
3
  • 腳本模式
    • Need interpreter(直譯器) to help ‘translate’
    • Execute the whole file or block at once
    • VSCode 示範 - .py 檔 與 .ipynb 檔
1
2
3
for i in range(3):
print(i)
print("The loop ends.")
1
2
3
4
5
Output:
0
1
2
The loop ends.

補充:使用 Anaconda 來建置開發環境

基礎語法(Basic Syntax)

  • Our first program: print("Hello World!")
    • print() 是一個函數 (function)
    • “Hello World!” 是給予這個函數的輸入
    • 此函數會幫助我們印出給定的輸入,給使用者看

計算(Computation)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>> # This is a comment(註解)
>>> # A comment will not be executed by python
>>> 1 + 2
3
>>> 3 - 1
2
>>> 5 * 2
10
>>> 5 ** 2 # 5 的 2 次方
25
>>> 8 / 5 # 8 除以 5(回傳小數)
1.6
>>> 8 // 5 # 8 除以 5 的商
1
>>> 8 % 5 # 8 除以 5 的餘數(取 mod)
3
>>> (50 - 5 * 6) / 4
5.0

變數(Variable)

  • 我們會需要變數來存放數值運算的結果,使用 = 可以將數值指派給變數,可以參考 基本命名規則
  • 若重複指派給相同名稱的變數,原本的值會被覆蓋掉!
  • a = 10 意為指派 10 給 a(右邊的值丟給左邊的容器)
  • a == 10 意為比較 a 是否等於 10(為邏輯判斷式)
    1
    2
    3
    4
    >>> width = 20
    >>> height = 5 * 9
    >>> width * height
    900
  • 讀取變數
1
2
3
4
>>> var = input()
3 # 使用者自行輸入
>>> print(var)
3 # 電腦將 var 的值印出

進階:Python 下劃線的意義

資料類別(Data Type)

  • 在宣告變數時,Python 自動幫我們決定資料類別
  • 其他語言(如 C++) 可能需要做類別宣告:int a = 1
  • 常見的基礎資料類別如下:
    • 整數 integer - 3
    • 小數(浮點數) float - 3.0
    • 字母 character - 'a'
    • 字串 string - "This is a string"
    • 布林值 Boolean - True (Non-zero) / False (Zero)

補充:String 是由 Character 組成的陣列,其他語言有可能會將 String 與 Character 當作兩種資料類別,但在 Python 中沒有 Character 的概念,因此長度為一的字母在 Python 中也會被當成字串來做處理。

型別轉換(Casting)

1
2
3
4
5
6
7
8
9
10
11
12
>>> str(3)
'3'
>>> int("3")
3
>>> float(3)
3.0
>>> float("string")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: 'string'
>>> type(3) # 檢查資料類別
<class 'int'>

指派 & 自我指派 (Assignment & Self-assignment)

1
2
3
4
5
6
a = 10
print(a)
a = a + 2 # 把 a + 2 指派給 a
print(a)
a += 2 # a 自己等於自己 + 2
print(a)
1
2
3
4
Output:
10
12
14

相同的還有 -= /= *= //= **= %=

比較/邏輯運算元(Comparison & Logical Operators)

  • < / <=:小於 / 小於等於
  • > / >=:大於 / 大於等於
  • == / !=:等於 / 不等於
  • and:且
  • or:或
  • not:非