Hello Python!|Python入門詳細介紹
完整的Python介紹與使用,對想進入Python及Data Science初學者易學易懂
文章搬新家囉!
全新內容歡迎參考「Hello Python!|Python入門詳細介紹 (2023更新版)」及「Python for Beginners 系列文章」,未來最新文章也將移至 Here
想了解 AI 、機器學習及深度學習的基礎概念,【從 AI 到 生成式 AI:40 個零程式的實作體驗,培養新世代人工智慧素養】,將帶領讀者在不會程式、不會數學也OK!的情況下,建立最完整的 AI 入門知識。
歡迎海內外讀者持續追蹤及關注我們的文章~~
Python Introduction
Python是一種易於學習、功能強大且被廣泛使用的高階程式語言(由Guido van Rossum創造),屬於通用型程式語言(非限定於特殊用途而設計)。
Python設計哲學強調程式碼的可讀性與簡潔的語法,其優雅語法和動態類型使其成為大多數平台上許多領域程式編寫和快速應用程序開發時的理想程式語言。當您在Python的shell當中鍵入import this,您將會充分了解Python設計的哲學與定位。
>>> import this
The Zen of Python, by Tim PetersBeautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
由於Python具有高效能的資料結構和簡單又有效的物件導向方法,以及對象編程的簡單而有效的方法,相比於 C++ 或 Java,Python 讓開發者能夠用更少的程式碼來表達想法。無論是小型或是大型程式程式開發,Python都試圖讓程式的結構更為清晰明瞭,這也是許多人之所以喜歡上它的重要原因。另外,Python擁有一個強大的standard library,同時Python社群提供了大量的third-party模組,其應用範圍很廣功能也很強大(如下圖),這也是讓接觸Python後的人愛不釋手很重要的原因。
也因為Python的功能強大及應用範圍廣,讓全球知名企業、資料科學家及更領域的專家,紛紛投入開發,下圖簡單列出一些企業系統或App應用,都是利用Python來開發出許多圍繞在你我生活當中常見的應用。
帶著輕鬆愉快的心情,準備好進入Python世界囉!
Python Fundamentals
1.Interactive Interpreter
本文章所使用的版本為Python 3.6.4,可參考Python download。至於其他開發工具或環境的安裝介紹,將會在後續文章提供詳細說明,在此先針對一般初學者如何快速並正確的進入Python領域做重要的介紹。
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
安裝完後就可以在>>>後面開始進行Python程式探索之旅了。
2.Comments
任何程式語言在介紹撰寫程式時,大都會帶到註解(Comments)部分,這對一個寫程式的人來說是一個很重要的觀念及習慣,在這裡先簡單介紹一下,想信大家很快就能了解。
# 單行註釋可用一個'#'做開始"""
多行註釋時可用3個 " , 並且可做為function和module的註釋
"""
3.Variables and Types
- Variable Assignment and Calculations With Variables
>>> x = 3 # Variable Assignment:integer
>>> x
3
>>> y = 'Hello Python !' # Variable Assignment:string
>>> y
'Hello Python !'
範例: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會在後續文章中特別介紹說明。
>>> 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(),分別將適當資料轉成整數、字串、浮點數及布林值。
>>> int(3.5) # 轉成integer
3
>>> str('3.5') # 轉成string
'3.5'
>>> float(5) # 轉成float
5.0
>>> bool(3 < 1) # 轉成boolean
False
4.Numbers and Booleans
- Numbers and Math
>>> 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)及邏輯判斷上。
>>> True and True
True
>>> False and True
False
>>> True or False
True
>>> not True
False
Booleans在一些不等式的邏輯判斷上也非常好用,這在未來Python寫程式時是很重要的。
>>> 2 == 2
True
>>> 5 < 3
False
>>> 3 * 5 == 8
False
>>> 3 >= 0
True
>>> 2 < 3 >= 5 # 2 < 3 and 3 >= 5 (True and False => False)
False
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]
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 for Beginners 系列文章,裡面有大量範例及 Quiz 練習。若是想要了解一些 AI 、機器學習及深度學習的基礎概念,可以參考這一本書【從 AI 到 生成式 AI:40 個零程式的實作體驗,培養新世代人工智慧素養】,它將帶領讀者在不會程式、不會數學也OK!的情況下,建立最完整的 AI 入門知識。
如果你喜歡這篇文章歡迎分享與追蹤,持續關注最新文章。
By Steven Lo (IG:@kwangchih)