iPhone 15 Pro · PGpenguin72
2084 字
10 分鐘
Python
附屬文章
Python
IMPORTANT本筆記初稿由 Perplexity 協助生成架構與提供建議,由 PGpenguin72 進行文章撰寫修改內容。
目錄
一. Python 基本規則
1. 變數與資料型態
基本型態
int- 整數 (例: 5, -3, 0)float- 小數 (例: 3.14, -2.5)str- 文字 (例: “hello”, ‘world’)bool- 對或錯 (True, False)
命名規則
- 只能用英文、數字、底線
_ - 不能以數字開頭
- 大小寫不一樣 (age 和 Age 是不同變數)
- 不能用特殊字 (if, for, while 等)
型態轉換
x = int("123") # 變成整數 123y = float("3.14") # 變成小數 3.14z = str(42) # 變成文字 "42"2. 運算子
數學運算
+加-減*乘/除 (結果有小數)//除 (只要整數部分)%餘數**次方
比較運算
==等於!=不等於>大於<小於>=大於等於<=小於等於
邏輯運算
and且 (兩個都要是True)or或 (至少一個是True)not非 (反轉)
複合指定運算子
+=加並指定 (x += 3 等於 x = x + 3)-=減並指定*=乘並指定//=整除並指定%=餘數並指定
x = 10x += 5 # x 變成 15x -= 3 # x 變成 12x *= 2 # x 變成 24x //= 4 # x 變成 6x %= 4 # x 變成 23. 條件判斷
if 條件: 執行這裡 # 記得縮排!elif 條件: 執行這裡else: 執行這裡重要: Python 用縮排(空格/Tab)來區分程式區塊,不用 {}
4. 迴圈
for 迴圈
for i in range(5): # 0, 1, 2, 3, 4 print(i)
for i in range(2, 5): # 2, 3, 4 print(i)
for i in range(0, 10, 2): # 0, 2, 4, 6, 8 print(i)for 可以走訪很多東西 (重要!)
# 走訪 Listarr = [10, 20, 30]for item in arr: print(item) # 10, 20, 30
# 走訪字串s = "Hello"for char in s: print(char) # H, e, l, l, o
# 走訪字典 (非常常用!)student = {"name": "Alice", "age": 18}
# 方法1: 走訪 keyfor key in student: print(key, student[key])
# 方法2: 走訪 key-value 對 (推薦!)for key, value in student.items(): print(f"{key}: {value}")while 迴圈
while 條件: 執行這裡控制迴圈
break- 跳出迴圈continue- 跳過這次,繼續下一次
5. 函式
def 函式名稱(參數1, 參數2): # 執行一些事 return 結果
# 使用函式答案 = 函式名稱(10, 20)6. 輸入輸出
輸入
x = input() # 讀取一行(是文字)n = int(input()) # 讀取整數f = float(input()) # 讀取小數輸出
print("Hello") # 印出並換行print(x, y) # 印多個,用空格分開print(x, end="") # 印完不換行print(f"x={x}, y={y}") # f-string 格式化輸出print 進階用法
# sep - 分隔符 (預設是空格)print(1, 2, 3, sep="-") # 輸出: 1-2-3print("A", "B", sep=", ") # 輸出: A, B
# end - 結尾字元 (預設是換行)print("Hello", end="") # 不換行print("World") # 緊接在后面: HelloWorld
print("A", end=" | ") # 輸出: A |print("B") # 輸出: B
# 同時使用 sep 和 endfor i in range(5): print(i, end=" ") # 輸出: 0 1 2 3 47. 常用內建函式
len(x) # 長度max(a, b, c) # 最大值min(a, b, c) # 最小值sum([1,2,3]) # 總和abs(-5) # 絕對值range(n) # 0 到 n-1 的數列8. 常見錯誤
EOFError- 檔案結尾(就沒有資料了)SyntaxError- 語法錯誤 (打錯字、忘記:等)IndentationError- 縮排錯誤NameError- 變數名稱打錯或沒定義TypeError- 型態錯誤 (例: “5” + 3)ValueError- 值的錯誤 (例: int(“abc”))ZeroDivisionError- 除以零IndexError- 索引超出範圍
9. 重要觀念
- 索引從 0 開始: 第一個元素是
[0] - range(n): 生成 0 到 n-1,不包含 n
- //: 整數除法,直接捨掉小數,
7//2 = 3 - input(): 一定回傳文字,要轉成數字要用 int() 或 float()
- 縮排很重要: Python 用縮排來區分程式區塊
二. Python 基本工具
1. List (串列/數組)
建立和存取
arr = [1, 2, 3, 4, 5] # 建立串列arr[0] # 取第一個: 1arr[-1] # 取最後一個: 5arr[1:3] # 切片: [2, 3] (索引 1~2)常用方法
arr.append(6) # 加到最後: [1,2,3,4,5,6]arr.pop() # 移除最後: [1,2,3,4,5]arr.insert(0, 0) # 在索引 0 插入 0arr.remove(3) # 移除第一個 3len(arr) # 長度arr.sort() # 排序(由小到大)arr.reverse() # 反轉走訪 List
for item in arr: # 直接走訪元素 print(item)
for i in range(len(arr)): # 用索引走訪 print(arr[i])2. String (字串)
常用方法
s = "Hello World"s.lower() # 變小寫: "hello world"s.upper() # 變大寫: "HELLO WORLD"s.strip() # 去除前後空白s.replace("H", "h") # 取代: "hello World"s.split() # 分割成 list: ["Hello", "World"]len(s) # 長度: 11s[0] # 取字元: 'H'字串拼接
#### 字串切片 (重要!)```pythons = "Hello World"s[0] # 'H' - 第一個字元s[6] # 'W' - 第 7 個字元s[-1] # 'd' - 最後一個字元
# 切片 [start:end] - 取索引 start 到 end-1s[0:5] # "Hello" - 索引 0~4s[6:11] # "World" - 索引 6~10
# 省略 start 或 ends[:5] # "Hello" - 從開頭到索引 4s[6:] # "World" - 從索引 6 到結尾s[2:] # "llo World" - 從索引 2 到結尾s[:-1] # "Hello Worl" - 從開頭到倍數第 2 個
# 步長 [start:end:step]s[::2] # "HloWrd" - 每隔2個取一個s[::-1] # "dlroW olleH" - 反轉字串
a = "Hello"b = "World"c = a + " " + b # "Hello World"d = f"{a} {b}" # f-string: "Hello World"3. 輸入輸出工具
讀取多個值
# 讀取一行多個數字a, b = map(int, input().split()) # 輸入: "3 5" -> a=3, b=5
# 讀取一行成 listarr = list(map(int, input().split())) # 輸入: "1 2 3" -> [1,2,3]
# 讀取多行lines = []for i in range(n): lines.append(input())輸出格式
print(*arr) # 把 list 用空格印出print(arr[0], arr[1]) # 分開印print(f"{x} {y}") # 格式化印出4. sorted() 和 sort()
arr = [3, 1, 4, 2]
# sorted() - 回傳新的,不改原 listnew_arr = sorted(arr) # new_arr = [1,2,3,4], arr 不變
# sort() - 直接改原 listarr.sort() # arr 變成 [1,2,3,4]
# 反向排序arr.sort(reverse=True) # [4,3,2,1]5. 其他工具
enumerate - 同時取索引和值
arr = ['a', 'b', 'c']for i, val in enumerate(arr): print(i, val) # 0 a, 1 b, 2 czip - 同時走訪多個 list
a = [1, 2, 3]b = ['a', 'b', 'c']for x, y in zip(a, b): print(x, y) # 1 a, 2 b, 3 c6. 二維串列
# 建立 3x3 矩陣matrix = [[0]*3 for _ in range(3)]
# 存取元素matrix[0][0] = 1print(matrix[0][0]) # 1
# 走訪for i in range(len(matrix)): for j in range(len(matrix[0])): print(matrix[i][j])注意: 不要用 [[0]*3]*3,這會造成錯誤!
7. Dictionary (字典) - 重要!
基本用法
# 建立字典student = {"name": "Alice", "age": 18, "score": 95}
# 取值print(student["name"]) # "Alice"print(student.get("age")) # 18
# 新增/修改student["grade"] = "A" # 新增student["age"] = 19 # 修改
# 刪除del student["score"]
# 檢查是否存在if "name" in student: print("有 name")走訪字典 (重要!)
# 走訪 keyfor key in student: print(key, student[key])
# 走訪 key-value 對for key, value in student.items(): print(f"{key}: {value}")
# 只走訪值for value in student.values(): print(value)
# 只走訪 keyfor key in student.keys(): print(key)8. 字元與數字轉換
# chr() - 數字轉字元 (ASCII/Unicode)chr(65) # 'A'chr(97) # 'a'chr(48) # '0'
# ord() - 字元轉數字ord('A') # 65ord('a') # 97ord('0') # 48
# bin() - 轉二進位bin(10) # '0b1010'bin(255) # '0b11111111'
# join() - 把 list 合併成字串"-".join(["a", "b", "c"]) # "a-b-c"" ".join(["Hello", "World"]) # "Hello World""".join(['1','2','3']) # "123"9. Lambda 函式
Lambda 是一個簡單的匿名函式,常用於排序。
# 基本語法f = lambda x: x * 2print(f(5)) # 10
# 多個參數add = lambda x, y: x + yprint(add(3, 4)) # 7
# 用於排序 (重要!)students = [("Alice", 85), ("Bob", 92), ("Charlie", 78)]
# 按名字排序students.sort(key=lambda x: x[0])
# 按分數排序students.sort(key=lambda x: x[1])
# 按分數由大到小students.sort(key=lambda x: x[1], reverse=True)
# 多條件排序:先按分數,再按名字students.sort(key=lambda x: (x[1], x[0]))三. APCS實作操作教學
四. 題目實作
初級
中級
留言區