Python 自學筆記:從零到專精的學習路徑與實作指南
引言:開啟你的 Python 程式設計之旅
歡迎來到 Python 的世界!Python 是一種功能強大、用途廣泛且易於學習的程式語言。無論你是想進入資料科學、網頁開發、自動化腳本,還是人工智慧領域,Python 都是一個絕佳的起點。它以其簡潔的語法和龐大的社群支援而聞名,讓初學者能夠快速上手,並讓經驗豐富的開發者能夠高效工作。
本篇自學筆記將帶你循序漸進地探索 Python 的核心概念,從環境建置到進階應用,並透過實際範例讓你邊學邊做。準備好你的電腦,讓我們一起踏上這趟精彩的 Python 學習旅程吧!
一、環境建置與基礎入門
在開始撰寫程式之前,我們需要先準備好開發環境。
1.1 安裝 Python
首先,你需要從官方網站下載並安裝 Python。
- 訪問官網:前往 Python 官方網站。
- 下載安裝程式:選擇適合你作業系統 (Windows, macOS, Linux) 的最新穩定版本。
-
執行安裝:
- 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)。
- Windows 用戶:執行下載的
-
驗證安裝:打開命令提示字元 (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 程式。
- 打開你選擇的編輯器。
-
輸入以下程式碼:
python
print("Hello, Python 自學者!") -
將檔案儲存為
hello.py(副檔名必須是.py)。 - 打開命令提示字元/終端機,導航到你儲存檔案的目錄。
-
執行程式:
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 的學習旅程中一切順利,持續精進,最終成為你領域的專家!