Python自學筆記 – 深度分析

Python 自學筆記:從零到專精的學習路徑與實作指南

引言:開啟你的 Python 程式設計之旅

歡迎來到 Python 的世界!Python 是一種功能強大、用途廣泛且易於學習的程式語言。無論你是想進入資料科學、網頁開發、自動化腳本,還是人工智慧領域,Python 都是一個絕佳的起點。它以其簡潔的語法和龐大的社群支援而聞名,讓初學者能夠快速上手,並讓經驗豐富的開發者能夠高效工作。

本篇自學筆記將帶你循序漸進地探索 Python 的核心概念,從環境建置到進階應用,並透過實際範例讓你邊學邊做。準備好你的電腦,讓我們一起踏上這趟精彩的 Python 學習旅程吧!

一、環境建置與基礎入門

在開始撰寫程式之前,我們需要先準備好開發環境。

1.1 安裝 Python

首先,你需要從官方網站下載並安裝 Python。

  1. 訪問官網:前往 Python 官方網站
  2. 下載安裝程式:選擇適合你作業系統 (Windows, macOS, Linux) 的最新穩定版本。
  3. 執行安裝

    • Windows 用戶:執行下載的 .exe 檔案。務必勾選 "Add Python X.X to PATH",這將使你能在命令提示字元 (CMD) 或 PowerShell 中直接執行 Python。
    • macOS 用戶:執行 .pkg 檔案,按照指示完成安裝。
    • Linux 用戶:大多數 Linux 發行版已預裝 Python,但可能不是最新版本。你可以使用套件管理器安裝,例如 sudo apt install python3 (Debian/Ubuntu) 或 sudo dnf install python3 (Fedora)。
  4. 驗證安裝:打開命令提示字元 (CMD/Terminal),輸入以下指令:

    ```bash
    python --version

    python3 --version
    ```

    如果顯示 Python 的版本號,表示安裝成功。

1.2 選擇開發環境 (IDE/Editor)

一個好的開發環境能大大提升你的學習效率。以下是一些推薦:

  • VS Code (Visual Studio Code):輕量、免費、功能強大且高度可擴展,是許多開發者的首選。安裝 Python 擴充套件後即可高效開發。
  • PyCharm:專為 Python 開發設計的整合開發環境 (IDE),提供社群版 (免費) 和專業版。功能豐富,適合大型專案。
  • Jupyter Notebook/Lab:非常適合資料科學、機器學習和互動式程式碼撰寫。它允許你以區塊 (cell) 的方式執行程式碼並即時查看結果。

本教學將假設你使用任何文本編輯器或 IDE 撰寫 .py 檔案。

1.3 第一個 Python 程式:Hello World!

讓我們來寫你的第一個 Python 程式。

  1. 打開你選擇的編輯器。
  2. 輸入以下程式碼:

    python
    print("Hello, Python 自學者!")

  3. 將檔案儲存為 hello.py (副檔名必須是 .py)。

  4. 打開命令提示字元/終端機,導航到你儲存檔案的目錄。
  5. 執行程式:

    bash
    python hello.py

    你應該會看到輸出 Hello, Python 自學者!。恭喜你!

二、Python 核心概念

掌握這些核心概念是學習 Python 的基石。

2.1 變數與資料型別

變數用於儲存資料。Python 是一種動態型別語言,你不需要在宣告變數時指定其型別。

  • 整數 (int)age = 30
  • 浮點數 (float)price = 19.99
  • 字串 (str)name = "Alice"
  • 布林值 (bool)is_active = True
# 變數宣告與賦值
my_integer = 100
my_float = 3.14159
my_string = "這是一個字串"
my_boolean = True

# 檢查變數型別
print(type(my_integer))
print(type(my_float))
print(type(my_string))
print(type(my_boolean))

2.2 運算子

Python 支援多種運算子。

  • 算術運算子+, -, *, /, // (整數除法), % (取餘數), ** (次方)
  • 比較運算子== (等於), != (不等於), >, <, >=, <=
  • 邏輯運算子and, or, not
  • 指定運算子=, +=, -=, *=
a = 10
b = 3

# 算術運算
print(f"a + b = {a + b}") # 13
print(f"a / b = {a / b}") # 3.333...
print(f"a // b = {a // b}") # 3 (整數除法)
print(f"a % b = {a % b}") # 1 (餘數)

# 比較運算
print(f"a == b? {a == b}") # False
print(f"a > b? {a > b}") # True

# 邏輯運算
x = True
y = False
print(f"x and y = {x and y}") # False
print(f"not x = {not x}") # False

2.3 條件判斷 (if, elif, else)

用於根據條件執行不同的程式碼區塊。

score = 85

if score >= 90:
    print("優等")
elif score >= 70:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("不及格")

2.4 迴圈 (for, while)

用於重複執行程式碼區塊。

  • for 迴圈:通常用於迭代序列 (如列表、字串、範圍)。

    ```python

    迭代數字範圍

    for i in range(5): # range(5) 會產生 0, 1, 2, 3, 4
    print(f"計數:{i}")

    迭代列表

    fruits = ["apple", "banana", "cherry"]
    for fruit in fruits:
    print(f"我喜歡 {fruit}")
    ```

  • while 迴圈:只要條件為真就持續執行。

    python
    count = 0
    while count < 3:
    print(f"目前計數:{count}")
    count += 1 # 每次迴圈結束後增加 count

2.5 函式 (Functions)

函式是一段可重複使用的程式碼,用於執行特定任務。使用 def 關鍵字定義。

# 定義一個沒有參數的函式
def greet():
    print("哈囉,歡迎學習 Python!")

# 呼叫函式
greet()

# 定義一個帶有參數的函式
def add_numbers(a, b):
    sum_result = a + b
    return sum_result # 回傳運算結果

# 呼叫函式並印出結果
result = add_numbers(5, 7)
print(f"5 + 7 = {result}")

# 帶有預設參數的函式
def say_hello(name="訪客"):
    print(f"你好,{name}!")

say_hello()         # 輸出:你好,訪客!
say_hello("小明")   # 輸出:你好,小明!

三、資料結構

Python 內建了多種強大的資料結構,用於組織和儲存資料。

3.1 列表 (Lists)

有序、可變 (mutable) 的集合,可以儲存不同型別的元素。用方括號 [] 表示。

my_list = [1, "hello", 3.14, True]

# 存取元素 (索引從 0 開始)
print(my_list[0]) # 1
print(my_list[1]) # hello

# 修改元素
my_list[1] = "world"
print(my_list) # [1, 'world', 3.14, True]

# 增加元素
my_list.append(False) # 在列表末尾添加
my_list.insert(1, "new item") # 在指定索引位置插入
print(my_list) # [1, 'new item', 'world', 3.14, True, False]

# 刪除元素
my_list.remove("new item") # 刪除第一個匹配的元素
del my_list[0] # 根據索引刪除
print(my_list) # ['world', 3.14, True, False]

3.2 元組 (Tuples)

有序、不可變 (immutable) 的集合。用圓括號 () 表示。一旦創建,就不能修改其內容。

my_tuple = (1, "apple", 3.14)

# 存取元素
print(my_tuple[1]) # apple

# 元組不能修改 (嘗試修改會報錯)
# my_tuple[0] = 2 # TypeError: 'tuple' object does not support item assignment

# 元組常用於函式回傳多個值
def get_coordinates():
    return 10, 20 # 實際上回傳一個元組

x, y = get_coordinates()
print(f"X 座標:{x}, Y 座標:{y}") # X 座標:10, Y 座標:20

3.3 字典 (Dictionaries)

無序、可變的鍵值對 (key-value pair) 集合。用大括號 {} 表示。鍵必須是唯一的且不可變的型別 (如字串、數字、元組)。

my_dict = {
    "name": "Alice",
    "age": 30,
    "city": "New York"
}

# 存取值
print(my_dict["name"]) # Alice
print(my_dict.get("age")) # 30

# 修改值
my_dict["age"] = 31
print(my_dict) # {'name': 'Alice', 'age': 31, 'city': 'New York'}

# 增加新的鍵值對
my_dict["email"] = "[email protected]"
print(my_dict)

# 刪除鍵值對
del my_dict["city"]
print(my_dict) # {'name': 'Alice', 'age': 31, 'email': '[email protected]'}

# 遍歷字典
for key, value in my_dict.items():
    print(f"{key}: {value}")

3.4 集合 (Sets)

無序、不重複元素的集合。用大括號 {} 表示,或者使用 set() 函式創建。

my_set = {1, 2, 3, 3, 4}
print(my_set) # {1, 2, 3, 4} (重複的 3 被自動移除)

another_set = {3, 4, 5, 6}

# 增加元素
my_set.add(5)
print(my_set) # {1, 2, 3, 4, 5}

# 移除元素
my_set.remove(1)
print(my_set) # {2, 3, 4, 5}

# 集合運算
print(f"聯集 (Union): {my_set.union(another_set)}") # {2, 3, 4, 5, 6}
print(f"交集 (Intersection): {my_set.intersection(another_set)}") # {3, 4, 5}

四、模組與套件

Python 的強大之處在於其豐富的模組和套件生態系統。

4.1 匯入模組

模組是包含 Python 定義和語句的文件 (.py 檔案)。你可以匯入它們來使用其中的功能。

# 匯入整個 math 模組
import math
print(f"圓周率:{math.pi}")
print(f"16 的平方根:{math.sqrt(16)}")

# 從模組中匯入特定功能
from datetime import datetime, date
today = date.today()
now = datetime.now()
print(f"今天日期:{today}")
print(f"現在時間:{now}")

# 匯入並重新命名
import random as rnd
print(f"隨機數:{rnd.randint(1, 10)}") # 產生 1 到 10 之間的隨機整數

4.2 安裝第三方套件 (pip)

pip 是 Python 的套件管理工具,用於安裝和管理第三方套件。

# 安裝一個套件 (例如:requests 用於發送 HTTP 請求)
pip install requests

# 升級一個套件
pip install --upgrade requests

# 移除一個套件
pip uninstall requests

# 查看已安裝的套件
pip list

範例:使用 requests 套件發送 HTTP 請求。

import requests

try:
    response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
    response.raise_for_status() # 如果請求失敗,拋出異常
    data = response.json()
    print(f"標題:{data['title']}")
    print(f"內容:{data['body']}")
except requests.exceptions.RequestException as e:
    print(f"請求發生錯誤: {e}")

五、錯誤處理與檔案操作

優雅地處理錯誤和與檔案互動是實用程式的關鍵。

5.1 錯誤處理 (try, except, finally)

使用 try-except 區塊來捕捉並處理程式執行時可能發生的錯誤 (異常)。

try:
    num1 = int(input("請輸入一個數字: "))
    num2 = int(input("請輸入另一個數字: "))
    result = num1 / num2
    print(f"結果是: {result}")
except ValueError:
    print("輸入無效!請輸入整數。")
except ZeroDivisionError:
    print("錯誤:不能除以零!")
except Exception as e: # 捕捉所有其他異常
    print(f"發生了未知錯誤: {e}")
finally:
    print("程式執行完畢 (無論是否發生錯誤)。")

5.2 檔案讀寫 (File I/O)

Python 提供了內建函式來讀取和寫入檔案。

  • open() 函式:用於打開檔案。
    • 'r':讀取模式 (預設)。
    • 'w':寫入模式 (會覆蓋現有內容)。
    • 'a':附加模式 (在檔案末尾添加內容)。
    • 'x':獨佔創建模式 (如果檔案已存在則失敗)。
    • 't':文本模式 (預設)。
    • 'b':二進位模式。
  • with 陳述式:推薦用於檔案操作,它能確保檔案在使用後被正確關閉,即使發生錯誤。
file_name = "my_notes.txt"

# 寫入檔案
try:
    with open(file_name, 'w', encoding='utf-8') as file:
        file.write("這是我的 Python 自學筆記。\n")
        file.write("學習程式設計很有趣!\n")
    print(f"檔案 '{file_name}' 寫入成功。")
except IOError as e:
    print(f"寫入檔案時發生錯誤: {e}")

# 讀取檔案
try:
    with open(file_name, 'r', encoding='utf-8') as file:
        content = file.read()
        print(f"\n檔案 '{file_name}' 的內容:\n{content}")

    # 逐行讀取
    print("\n逐行讀取檔案內容:")
    with open(file_name, 'r', encoding='utf-8') as file:
        for line in file:
            print(line.strip()) # .strip() 移除行尾的換行符
except FileNotFoundError:
    print(f"錯誤:檔案 '{file_name}' 不存在。")
except IOError as e:
    print(f"讀取檔案時發生錯誤: {e}")

六、進階主題與學習資源

恭喜你走到這裡!你已經掌握了 Python 的核心知識。接下來,你可以根據興趣深入探索。

6.1 物件導向程式設計 (OOP)

Python 是一種物件導向語言。理解類別 (Class)、物件 (Object)、繼承 (Inheritance)、多型 (Polymorphism) 等概念,能幫助你編寫更具結構性、可維護的程式碼。

class Dog:
    # 類別屬性
    species = "Canis familiaris"

    # 初始化方法 (建構子)
    def __init__(self, name, age):
        self.name = name # 實例屬性
        self.age = age

    # 實例方法
    def bark(self):
        return f"{self.name} 汪汪叫!"

    def describe(self):
        return f"{self.name} 是一隻 {self.age} 歲的 {self.species}。"

# 創建物件 (實例化)
my_dog = Dog("Buddy", 3)
your_dog = Dog("Lucy", 5)

print(my_dog.describe()) # Buddy 是一隻 3 歲的 Canis familiaris。
print(your_dog.bark())   # Lucy 汪汪叫!

6.2 常見應用領域與相關套件

  • 網頁開發
    • Flask:輕量級網頁框架,適合小型專案或 API 開發。
    • Django:功能齊全的網頁框架,適合大型、複雜的專案。
  • 資料科學與機器學習
    • NumPy:高效處理數值陣列運算。
    • Pandas:用於資料分析和操作 (DataFrames)。
    • Matplotlib / Seaborn:資料視覺化。
    • Scikit-learn:機器學習演算法庫。
    • TensorFlow / PyTorch:深度學習框架。
  • 自動化與腳本編寫
    • 檔案操作、系統管理、網路爬蟲 (BeautifulSoup, Scrapy)。
  • 遊戲開發
    • Pygame。
  • 圖形使用者介面 (GUI)
    • Tkinter, PyQt, Kivy。

6.3 持續學習資源

  • Python 官方文件:最權威、最完整的參考資料 (docs.python.org)。
  • 線上課程平台:Coursera, Udemy, Codecademy, freeCodeCamp 等。
  • 技術部落格與論壇:Stack Overflow, Medium 上的技術文章。
  • GitHub:瀏覽開源專案,學習他人如何編寫程式碼。
  • 練習平台:LeetCode, HackerRank, Codewars 練習解題。
  • 實作專案:從簡單的腳本開始,逐步挑戰更複雜的專案。

總結

恭喜你完成了這份 Python 自學筆記的導覽!從環境建置到核心概念,再到資料結構和模組使用,你已經掌握了成為一名 Python 開發者的基本技能。Python 的世界廣闊而充滿機會,但學習程式設計最重要的是「動手實踐」。

記住以下幾點:
1. 多練習:程式碼不是讀懂就好,一定要親手敲出來。
2. 多思考:遇到問題時,嘗試分析原因並尋找解決方案。
3. 不要怕犯錯:錯誤是學習的過程,每次解決錯誤都是一次成長。
4. 保持好奇心:探索新的模組、框架和應用領域。

祝你在 Python 的學習旅程中一切順利,持續精進,最終成為你領域的專家!

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top