文章目錄

本篇文章主要是快速介紹 Python 整個基本概念,如果想要進一步了解 Python,可以參考《Python for Beginners》系列文章。此系列文章提供給有興趣的讀者一個淺顯易懂,圖文解說,範例練習及 Quiz 測驗的學習園地,非常適合初學者學習。
接下來就讓我們 Hello Python!Hello World!
1. 什麼是 Python
Python 是全球最受歡迎的程式設計語言之一。在 1990 年代初期由 Guido van Rossum 建立,是一種易於學習、功能強大且被廣泛使用的通用程式語言(非限定於特殊用途而設計),並且享有各種不同用途。從自動化重複工作、撰寫 Web 應用程式到建置機器學習模型並實作神經網路。其豐富且容易瞭解的語法,以及各種可用的開放原始碼套件 (常用的共用程式碼程式庫)供任何人使用,因此近幾年成為數據科學家及人工智慧專家首選的程式語言。

Python 設計哲學非常強調程式碼可讀性與簡潔語法,其優雅語法和動態類型,使其成為大多數平台上眾多領域程式編寫和快速應用程序開發時的理想程式語言。當您在 Python 的 shell (安裝教學可參考「Python IDLE 完整安裝教學」)或其它任何 Python 開發環境當中鍵入 import this (如下圖),您將會充分了解 Python 設計的哲學與定位。

“什麼是程式語言呢?你可以將它視為是一種語言也是一種表達方式,主要用來和電腦溝通用。人類彼此溝通時講的叫做「自然語言」,例如中文、英文、日文等等。而我們要精確的跟電腦溝通則需要用「程式語言」。與電腦溝通的程式語言非常多種,除了 Python 外,像是 Java、C/C++、JavaScript、R、Go….等等都是各類型的程式語言。“
2. 應該先學 Python 嗎?
如果你是程式設計初學者,或是想探究人工智慧、資料科學的愛好者,基於下面幾個原因,筆者會推薦學 Python:
- 簡單易學
- 大量框架
- 大社群
- 人工智慧、機器學習及資料科學選擇的語言
- 高比例需求
- 支援創客
除此之外,Python 的應用範圍也很廣,除了人工智慧及資料科學外,網路爬蟲更是常見應用。
由於 Python 具有高效能的資料結構和簡單又有效的物件導向方法,以及對象編程的簡單而有效的方法,相比於 C++ 或 Java,Python 讓開發者能夠用更少的程式碼來表達想法。無論是小型或是大型程式程式開發,Python 都試圖讓程式的結構更為清晰明瞭,這也是許多人之所以喜歡上它的重要原因。另外,Python擁有一個強大的標準 library,同時 Python 社群提供了大量的 third-party 模組,其應用範圍很廣功能也很強大(如下圖),這也是讓接觸 Python 後的人愛不釋手很重要的原因。

也因為 Python 的功能強大及應用範圍廣,全球許多知名企業及資料科學家,也都紛紛投入開發。下圖簡單列出一些知名企業使用 Python 來擴大營運規模及競爭力。其它還有很多企業系統及 App,都是利用 Python 來開發出許多圍繞在你我生活當中常見的應用。

3. 機器學習及資料科學的最佳選擇
如前面所提,Python 是機器學習及資料科學家的首選。由於有非常多的函式庫(libraries)及模組(modules)可以提供 Python 使用,因此在使用 Python 編寫你的機器學習演算法時,效果很好也特別輕鬆。

本文先簡單介紹一下這些重要的 Python 函式庫,做為未來學習的基礎,也會在後續文章做完整介紹:
- Numpy:它是一個處理 n 維陣列的數學函式庫。在 Python 中。它具有驚人的功能,使您能夠有效地進行計算,例如,對於處理陣列(array)、字典(dictionary)、函數(function)、資料型態(datatype)和處理圖像(image)。
- SciPy:SciPy 是數值演算法和特定領域工具箱的集合,包括訊號處理、優化及統計等等。SciPy 是一個在科學及高效能計算很棒的函式庫。
- Matplotlib:Matplotlib 則是一個非常流行的繪圖函式庫,它提供 2D 繪圖和 3D 繪圖。建立在 Python 之上的這 3 個函式庫(Numpy、SciPy、Matplotlib)基本知識,適用於想要解決現實世界問題的數據科學家,或是進入資料科學領域的初學者,都會是一個很好的資產。
- Pandas:Pandas 是一個提供高效能且易於使用資料結構的高級 Python 函式庫。它具有許多用於數據導入、操作和分析的功能。特別是提供了用於數值表及時間序列上的資料結構與操作。
- Scikit-learn:Scikit-learn 是 Python 程式語言的免費機器學習函式庫。它擁有大部分的分類、回歸和聚類演算法,而且它的設計可以使用 Python 數值和科學函式庫 (NumPy 和 SciPy)。使用 Scikit-learn 實現機器學習模型非常簡單。大多數需要在機器學習中完成的任務,通常幾行 Python 程式碼就可以實現。
- TensorFlow:用於機器學習的端對端開放原始碼平台,由各種工具、程式庫和社群資源所組成,功能完善且彈性,可讓研究人員進一步發展機器學習技術,並讓開發人員輕鬆建構及部署模型。此機器學習框架,可以讓您在各種設備訓練和執行模型 (Model)。
- Keras:使用 Python 編寫的深度學習 (Deep Learning) API ,可以在 TensorFlow 上面運行。Keras 是為人類而非機器設計的 API,其廣闊的生態系統是緊密連接 TensorFlow 2 生態系統的核心部分,涵蓋了機器學習工作流程的每一步。
認識並了解 Pythen 後,現在可以帶著輕鬆愉快的心情,準備好進入 Python 世界囉!😉
4. Python Fundamentals
4.1 Interactive Interpreter
本文章所使用的版本為 Python IDLE 3.10.5,軟體下載可參考 Python download,詳細安裝教學則可以參考下面這篇文章。
至於其他開發工具或環境的安裝介紹,將會在後續文章提供詳細說明,在此先針對一般初學者如何快速並正確的進入 Python 領域做重要的介紹。本文會先簡單並快速利用範例及圖示帶大家認識一些常用觀念,後續會再對初學者提供完整教學文章。
Python 3.10.5 (tags/v3.10.5:f377153, Jun 6 2022, 16:14:13) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
安裝完 Python IDLE 後就可以在 Shell Window 的 >>> 後面開始進行 Python 程式探索之旅。
4.2 Comments
任何程式語言在介紹撰寫程式時,大都會帶到註解 (Comments) 部分,這對一個寫程式的人來說是一個很重要的觀念及習慣,在這裡先簡單介紹一下,想信大家很快就能了解。後面的範例我們也都會加上註解輔助說明。
# 單行註釋可用一個'#'做開始
"""
多行註釋時可用3個 " , 並且可做為 function 和 module 的註解
"""
4.3 Variables and Types
- Variable Assignment and Calculations With Variables
範例 1:指定變數
>>> x = 3 # Variable Assignment:integer
>>> x
3
>>> y = 'Hello Python !' # Variable Assignment:string
>>> y
'Hello Python !'
範例 2:Calculate BMI
說明:利用 BMI 的計算範例,來說明變數指定的方式可用來做簡單運算,也可以直接將數值帶入公式計算。幾種方式的練習將有助於理解未來在應用上的較率及差別性。
>>> height = 1.76 # 指定身高變數 height 的值為1.76
>>> weight = 65.8 # 指定體重變數 weight 的值為65.8
>>> 65.8 / 1.76 ** 2 # 直接將數值帶入公式計算,BMI = weight/height **2
21.242252066115704
>>> weight / height ** 2 # 利用變數進行運算
21.242252066115704
>>> bmi = weight / height ** 2 # 變數進行運算後,指定給另一個變數 bmi
>>> bmi
21.242252066115704
- Types and Type Conversion
Python 常見的資料型態(data type) 有整數(integer)、字串(string)、浮點數(float)、布林值(boolean)及複數(complex)這五種,其中 複數(complex) 會在後續文章中特別介紹說明。
範例 3:型態名稱
>>> type(2) # integer,整數
<class 'int'>
>>> type('Hello Python!') # string,字串
<class 'str'>
>>> type(3.2) # float,浮點數
<class 'float'>
>>> type(True) # boolean,布林值
<class 'bool'>
>>> type(3 + 4j) # complex,複數
<class 'complex'>
我們可以根據需求,利用 int()、str()、float() 及 bool() 等內建函數(Built-in Functions),分別將適當資料轉成整數、字串、浮點數及布林值。
範例 4:型態轉換
>>> int(3.5) # 轉成integer
3
>>> str('3.5') # 轉成string
'3.5'
>>> float(5) # 轉成float
5.0
>>> bool(3 < 1) # 轉成boolean
False
4.4 Numbers and Booleans
- Numbers and Math
範例 5:數值運算
>>> x = 3 # Variable Assignment
>>> x
3
>>> x + 2 # Addition,加法
5
>>> x – 1 # Subtraction,減法
2
>>> x * 5 # Multiplication,乘法
15
>>> x / 2 # Division,除法
1.5
>>> x % 2 # Modulo,取餘數
1
>>> x ** 3 # Exponentiation,指數
27
>>> 100//22 # Floor Division,取商數
4
- Booleans
Booleans 可以用在真值表 (Truth Table) 及邏輯判斷上。

範例 6:布林運算
>>> True and True
True
>>> False and True
False
>>> True or False
True
>>> not True
False
Booleans 在一些不等式的邏輯判斷上也非常好用,這在未來Python寫程式時是很重要的。
>>> 2 == 2 # 2 等於 2,True
True
>>> 5 < 3 # 5 小於 3,False
False
>>> 3 * 5 == 8 # 3乘以5 等於 8,False
False
>>> 3 >= 0 # 3 大於等於 0,True
True
>>> 2 < 3 >= 5 # 2 < 3 and 3 >= 5 (True and False => False)
False
4.5 Strings and Lists
>>> My_String = 'Hello '
>>> My_String
'Hello '

- String Operations
>>> My_String * 3
'Hello Hello Hello '

>>> My_String + 'Python !'
'Hello Python !'

>>> 'H' in My_String
True

>>> 'h' in My_String
False

String 的索引 (index) 方向有兩種,從左邊方向過來(indexing)索引值是從 0 開始,右邊方向過來(Negative indexing)索引值則是從 -1 開始,可以看當時哪一邊比較方便使用即可,大家可以試著動手做看看就可以了解。

>>> My_String[1]
'e'

>>> My_String [-2]
'o'

String 除了 indexing 外,另一個常見應用就是 Slicing,可參考下面範例後面註解,你將可以快速一探究竟,未來將會更仔細的說明此一部分。建議一樣動手先做看看,並試看看任何你想試的,你將會更了解用法。
>>> My_String[0 : 2] # 位置0開始,位置1結束(2的前一個),亦可用My_String[:2]表示
'He'
>>> My_String[3 : 6] # 位置3開始,位置5結束(6的前一個),亦可用My_String[3:]表示
'lo '
>>> My_String[1 : 4] # 位置1開始,位置3結束(4的前一個)
'ell'

- String Methods
String 一些常用的 methods 如下,
>>> My_String.upper() # String to uppercase
'HELLO '
>>> My_String.lower() # String to lowercase
'hello '
>>> My_String.count('l') # Count String elements 'l'
2
>>> My_String.replace('e', 'k') # Replace String elements from'e' to 'k'
'Hkllo '
>>> My_String.strip() # Strip whitespaces
'Hello'
- Basic Lists
>>> My_List_letters = ['a', 'b'] # 建立一個新的 letters list
>>> My_List_numbers = [1, 3, 5] # 建立一個新的 numbers list
>>> My_List_empty = [] # 建立一個新的 empty list
List 可以包含不同型態的元素
>>> My_List = [1, 3, 'a', 'dog'] # 建立一個包含不同資料型態的list
>>> My_List
[1, 3, 'a', 'dog']
- Selecting List Elements
藉由下列範例你將會清楚了解 List 在 Subsetting, Slicing 及 Indexing 的應用。
>>> a = 'is'
>>> b = 'python'
>>> My_List = ['my', 'list', a, b] # 建立 1D List
>>> My_List2 = [[1, 2, 3, 4], [5, 6, 7, 8]] # 建立 2D List
建立一維 List,從左邊索引由0開始,若從右邊索引則是由-1開始,如下圖。

建立二維 List,兩個索引方向如下圖。

List Slicing 的基本結構如下,start 參數表示為起始位置,如果沒有寫則從 0 開始,end 參數表示結束於 end 參數前一個位置,如果沒有寫則表示到最後,可參考並動手做看看下列範例。

>>> My_List[2] # Select item at index 2
'is'

>>> My_List[-3] # Select 3rd last item
'list'

>>> My_List[1 : 3] # Select items at index 1 and 2
['list', 'is']

>>> My_List[1 : ] # Select items after index 0
['list', 'is', 'python']

>> My_List[ : 3] # Select items before index 3
['my', 'list', 'is']

>>> My_List[ : ] # Copy My_List
['my', 'list', 'is', 'python']

>>> My_List2[1][2]
7

>>> My_List2[0][ : 3]
[1, 2, 3]

- List Operations
>>> My_List = ['Hello', 'Python', '! ']
>>> My_List
['Hello', 'Python', '! ']
>>> My_List + My_List # Concatenation
['Hello', 'Python', '! ', 'Hello', 'Python', '! ']
>>> My_List * 2 # Repetition (twice)
['Hello', 'Python', '! ', 'Hello', 'Python', '! ']
>>> len(My_List) # Length
3
>>> 2 in My_List # Membership
False
- List Methods
List一些常用的methods如下,動手試一試囉
>>> My_List = [1, 3, 'a', 'dog']
>>> My_List.index('a') # Get the index of an item 'a'
2
>>> My_List.count('a') # Count an item 'a'
1
>>> My_List.append('b') # Append an item 'b' at a time
>>> My_List
[1, 3, 'a', 'dog', 'b']
>>> My_List.remove('a') # Remove an item 'a'
>>> My_List
[1, 3, 'dog', 'b']
>>> My_List.reverse() # Reverse My_List
>>> My_List
['b', 'dog', 3, 1]
>>> My_List.insert(1, 'cat') # Insert an item 'cat' at index 1
>>> My_List
['b', 'cat', 'dog', 3, 1]
4.6 Console I/O
可以試著使用 input() 及 print(),做為跟電腦 I/O 開始的互動。
>>> name = input('What is your name ? ') # 從user輸入字串並指定給name變數
What is your name ? Steven # user輸入Steven字串
>>> print("Nice to meet you,", name) # 列印引號內的字串及name內的值Steven
Nice to meet you, Steven
經由本文介紹後,相信初學者對 Python 應該有基本認識,後續會再分享 Python 相關文章給有興趣的初學者。
讀者若想要多了解一些 Python 的基本程式語法,可以參考 Python for Beginners 系列文章,裡面有大量範例及 Quiz 練習。若是想要了解一些 AI 、機器學習及深度學習的基礎概念,可以參考這一本書【從 AI 到 生成式 AI:40 個零程式的實作體驗,培養新世代人工智慧素養】,它將帶領讀者在不會程式、不會數學也OK!的情況下,建立最完整的 AI 入門知識。
如果你喜歡這篇文章歡迎訂閱、分享(請載名出處)與追蹤,並持續關注最新文章。同時 FB 及 IG 也會不定期提供國內外教育與科技新知。
1 comment
[…] 如果讀者想在學習安裝前認識並了解 Python,可以參考「Hello Python!|Python 入門詳細介紹 (2022更新版)」 […]