iT邦幫忙

2024 iThome 鐵人賽

DAY 1
0
Python

初學者的 30 天 Python 復健課程系列 第 1

復健第一天:重新回憶起 Python 的一切

  • 分享至 

  • xImage
  •  

復健系列適合哪些人

相較於從頭教起有關 Python 的細節知識,這個復健系列主要是希望透過主題式筆記的方式,摘要學習 Python 的重點知識,藉此可以快速回憶起 Python,所以對於已經有學習過 Python 相關知識的各位,能夠更快地瞭解內文想要表達的意涵。
這個 Python 30 日復健系列,主要受到 GitHub 的一位名為 Asabeneh S. Yetayeh 工程師所啟發,在他的 30-Days-Of-Python 中,將 Python 基礎知識分成 30 天份的學習內容,只要能夠努力撐過這 30 天,相信我們對於 Python 的熟習度,都能有大幅地成長。

所以,我們開始這趟旅程吧!

如何使用 Python

網路上有許多有關如何安裝與設定 Python 的教學影片,Python 的安裝本身也算容易,基本上到 Python 官網 尋找所需的版本進行安裝即可,這邊就不再贅述。
這邊只就安裝好 Python 後,我們如何在 Terminal 終端機裡,輸入幾個常見的指令來確認 Python 的相關指令並使用 Python。

常見的指令

  • 檢查目前安裝的 Python 版本
python --version
  • 使用指令開啟 Python Interactive shell
python
  • 關閉並離開 Python Interactive Shell,也可以使用 ctrl + d
exit()

基礎 Python 知識

  • Python 的檔案名稱會以 .py 的副檔名結尾。

縮排 indentation 的重要性

縮排指的是「在每一行的開頭,新增指定次數的空白鍵」,因為在許多程式語言中,正確的縮排可以大幅增加程式碼的可閱讀性,而這一點在 Python 中尤其重要,因為 Python 是透過縮排來辨別各區塊的程式碼,剛開始學習 Python 時,時常會因為縮排錯誤導致程式碼執行後發生錯誤,但隨著對於 Python 的熟悉與 IDE 擴充程式的協助,不知不覺會下意識地進行縮排,依照 Python 的慣例————「使用 4 個空白鍵作為縮排」。


print("hello world")

def greeting(text):
    # 由於我們希望這邊的內容是 def greeting(text) 的一部分,所以要進行縮排。
    print("hi, how are you?")
    print("I am fine.")

# 這邊則希望開始編寫其他獨立於 def greeting(text) 的其他內容,所以不需要縮排,直接從頭開始編寫。
print("this is a new beginning.")

註解 comment 的意義

註解 comment 顧名思義即是「針對某段的原始碼進行補充與備註,而這段原始碼也不會被 Python 執行」。
通常我們會使用註解解釋某段原始碼的用途,日後我們或是其他人在閱讀這段原始碼的時候,可以更輕鬆地瞭解原始碼的意義。
同樣地,我們也可以利用「註解段落不會被 Python 執行」的特型,讓 Python 在執行時刻意地跳過某段程式碼,進而改變執行後所得到的結果。

我們可以使用 # 井字號達到註解單行程式碼的效果,同時依照慣例,我們會在 # 後面空一格,才開始編寫想要輸入的註解內容。

 # comment starts with hash
 # this is a python comment, because it starts with a (#) symbol

我們也可以透過 """ (三個引號)達到多行註解的效果。

"""
上面三個引號,代表是註解的開始。

註解註解註解註解註解註解註解註解
多行註解有開始,就要有結束。

下面三個引號,代表是註解的結束。
"""

常見的資料類型 Data Types 有哪些

Python 中,不同的資料種類有不同的負責內容與運算規則,下面是幾種常見的資料類型(Data Types):

String 字串
String 字串應該是 Python 中最常見到的資料種類,當我們想要表達一個字詞時,我們可以使用「單引號或是雙引號」表示這是一個字串。

"這是使用雙引號的字串"
'這是使用雙引號的字串'
'不可以單引號開始,雙引號結束!"

Number 數字
除了字串,在 Python 中第二常見的資料類型就屬 Number 數字了,數字的又可以再細分成:

  • Integer 整數:包含正整數、負整數、零。
  • Float 浮點數:代表的帶有小數的數值。
  • Complex 複數:由實部與虛部所組成的數字類型。
123     # 這是 Integer 整數
9.1     # 這是 Float 小數
2 + 4j  # 這是 Complex 複數

請問以下分別是哪種資料類型呢?

  1. "132"
  2. 1.0
  3. -3
  4. 0.0

答案

  1. String 字串
  2. Float 浮點數
  3. Integer 整數
  4. Float 浮點數

Boolean 布林值
Boolean 布林值又可稱作「真假值」,因為布林值只有 TrueFalse,如果不是真的,那就一定是假的,沒有曖昧的存在。

True    # 真的,記得 T 要大寫
False   # 假的,記得 F 要大寫

Python 還有一些可以存放多個元素的資料型態,像是 List 串列、Dictionary 字典、Tuple 元組、Set 集合,這些比較複雜的資料型態,現在有個印象即可,待後面我們再娓娓道來。

如何檢查資料類型

使用 type function

type("hello")       # str
type(10)            # int
type(3.14)          # float
type(1 + 3j)        # complex
type([1, 2, "abc"]) # list
type({"age": 18})   # dict
type((2, 4, "go",)) # tuple
type({0.5, 3, 10})  # set

常見的錯誤類型 Error Types

如果執行的內容有錯誤,Python 會顯示相關的錯誤 (Error) 訊息內容,因此可以多瞭解常見的 Python 錯誤訊息類型,透過瞭解這些 Error Types 的訊息內容,我們可以更快得知程式碼中的錯誤原因,並根據其內容進行除錯(Debug),節省一步步偵查、測試的時間。

常見的Error Types 錯誤類型有:

  • SyntaxError

    # SyntaxError: Missing colon after if statement
    if True
    print("This will cause a SyntaxError")
    
  • IndexError

    # IndexError: Trying to access an index that doesn't exist
    my_list = [1, 2, 3]
    print(my_list[3])
    
  • NameError

    # NameError: Using a variable that hasn't been defined
    print(non_existent_variable)
    
  • ModuleNotFoundError

    # ModuleNotFoundError: Trying to import a module that doesn't exist
    import non_existent_module
    
  • KeyError

    # KeyError: Accessing a non-existent key in a dictionary
    my_dict = {"a": 1, "b": 2}
    print(my_dict["c"])
    
  • ImportError

    # ImportError: Importing a non-existent name from a module
    from math import non_existent_function
    
  • AttributeError

    # AttributeError: Accessing a non-existent attribute of an object
    my_list = [1, 2, 3]
    my_list.non_existent_method()
    
  • TypeError

    # TypeError: Performing an operation on incompatible types
    print("String" + 5)
    
  • ValueError

    # ValueError: Passing an invalid value to a function
    int("not_a_number")
    
  • ZeroDivisionError

    # ZeroDivisionError: Dividing a number by zero
    print(10 / 0)
    

常見的運算子 Operator

除了一般的加減乘除,在 Python 中常見的運算子還有平方 **、餘數 %、商數 \\

print(2 + 3)    # 5
print(3 - 1)    # 2
print(3 * 2)    # 6
print(3 / 2)    # 1.5
print(3 ** 2)   # 9
print(11 % 3)   # 2
print(11 // 3)  # 1

後記

在原版的 30-Days-Of-Python 裡面,作者有針對每一天規劃了不同的練習題目,我也有將這些題目的問題與答案整理在個人的 GitHub 作為紀錄與分享,裡面的內容與翻譯會隨著鐵人賽的進行漸漸充實,這邊也跟大家分享我在練習時的一些習慣與心法:

  • 盡可能在不看答案的狀況下,自行完成題目練習。
  • 就算寫不出答案,也要能說出或推測出應該如何解決該問題。
  • 利用註解 comment 紀錄自己解題的過程,未來回頭複習才記得自己此時的思考邏輯是什麼。
  • 善用 GPT 核對答案。
  • 詢問 GPT 是否有更好的答案,並詢問為什麽 GPT 會建議這樣的答案更優秀。
  • 所謂最好的答案,並不一定是最簡短的答案,挑一個符合自己思維並理解的答案,才是最重要的!

復健的旅程其實充滿了苦痛,但如果我可以撐過三十天的鐵人賽,相信你也一定可以讀完三十天的鐵人賽,期待我們一起越來越厲害!


下一篇
復健第二天:內建函數 Built-in Functions 與變數 Variables
系列文
初學者的 30 天 Python 復健課程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言