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 等)
型態轉換
1 2 3
| x = int("123") y = float("3.14") z = str(42)
|
2. 運算子
數學運算
+ 加
- 減
* 乘
/ 除 (結果有小數)
// 除 (只要整數部分)
% 餘數
** 次方
比較運算
== 等於
!= 不等於
> 大於
< 小於
>= 大於等於
<= 小於等於
邏輯運算
and 且 (兩個都要是True)
or 或 (至少一個是True)
not 非 (反轉)
複合指定運算子
+= 加並指定 (x += 3 等於 x = x + 3)
-= 減並指定
*= 乘並指定
//= 整除並指定
%= 餘數並指定
1 2 3 4 5 6
| x = 10 x += 5 x -= 3 x *= 2 x //= 4 x %= 4
|
3. 條件判斷
1 2 3 4 5 6
| if 條件: 執行這裡 elif 條件: 執行這裡 else: 執行這裡
|
重要: Python 用縮排(空格/Tab)來區分程式區塊,不用 {}
4. 迴圈
for 迴圈
1 2 3 4 5 6 7 8
| for i in range(5): print(i)
for i in range(2, 5): print(i) for i in range(0, 10, 2): print(i)
|
for 可以走訪很多東西 (重要!)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| arr = [10, 20, 30] for item in arr: print(item)
s = "Hello" for char in s: print(char)
student = {"name": "Alice", "age": 18}
for key in student: print(key, student[key])
for key, value in student.items(): print(f"{key}: {value}")
|
while 迴圈
控制迴圈
break - 跳出迴圈
continue - 跳過這次,繼續下一次
5. 函式
1 2 3 4 5 6
| def 函式名稱(參數1, 參數2): return 結果
答案 = 函式名稱(10, 20)
|
6. 輸入輸出
輸入
1 2 3
| x = input() n = int(input()) f = float(input())
|
輸出
1 2 3 4
| print("Hello") print(x, y) print(x, end="") print(f"x={x}, y={y}")
|
print 進階用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| print(1, 2, 3, sep="-") print("A", "B", sep=", ")
print("Hello", end="") print("World")
print("A", end=" | ") print("B")
for i in range(5): print(i, end=" ")
|
7. 常用內建函式
1 2 3 4 5 6
| len(x) max(a, b, c) min(a, b, c) sum([1,2,3]) abs(-5) range(n)
|
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 (串列/數組)
建立和存取
1 2 3 4
| arr = [1, 2, 3, 4, 5] arr[0] arr[-1] arr[1:3]
|
常用方法
1 2 3 4 5 6 7
| arr.append(6) arr.pop() arr.insert(0, 0) arr.remove(3) len(arr) arr.sort() arr.reverse()
|
走訪 List
1 2 3 4 5
| for item in arr: print(item)
for i in range(len(arr)): print(arr[i])
|
2. String (字串)
常用方法
1 2 3 4 5 6 7 8
| s = "Hello World" s.lower() s.upper() s.strip() s.replace("H", "h") s.split() len(s) s[0]
|
字串拼接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
```python s = "Hello World" s[0] s[6] s[-1]
s[0:5] s[6:11]
s[:5] s[6:] s[2:] s[:-1]
s[::2] s[::-1]
a = "Hello" b = "World" c = a + " " + b d = f"{a} {b}"
|
3. 輸入輸出工具
讀取多個值
1 2 3 4 5 6 7 8 9 10
| a, b = map(int, input().split())
arr = list(map(int, input().split()))
lines = [] for i in range(n): lines.append(input())
|
輸出格式
1 2 3
| print(*arr) print(arr[0], arr[1]) print(f"{x} {y}")
|
4. sorted() 和 sort()
1 2 3 4 5 6 7 8 9 10
| arr = [3, 1, 4, 2]
new_arr = sorted(arr)
arr.sort()
arr.sort(reverse=True)
|
5. 其他工具
enumerate - 同時取索引和值
1 2 3
| arr = ['a', 'b', 'c'] for i, val in enumerate(arr): print(i, val)
|
zip - 同時走訪多個 list
1 2 3 4
| a = [1, 2, 3] b = ['a', 'b', 'c'] for x, y in zip(a, b): print(x, y)
|
6. 二維串列
1 2 3 4 5 6 7 8 9 10 11
| matrix = [[0]*3 for _ in range(3)]
matrix[0][0] = 1 print(matrix[0][0])
for i in range(len(matrix)): for j in range(len(matrix[0])): print(matrix[i][j])
|
注意: 不要用 [[0]*3]*3,這會造成錯誤!
7. Dictionary (字典) - 重要!
基本用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| student = {"name": "Alice", "age": 18, "score": 95}
print(student["name"]) print(student.get("age"))
student["grade"] = "A" student["age"] = 19
del student["score"]
if "name" in student: print("有 name")
|
走訪字典 (重要!)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| for key in student: print(key, student[key])
for key, value in student.items(): print(f"{key}: {value}")
for value in student.values(): print(value)
for key in student.keys(): print(key)
|
8. 字元與數字轉換
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| chr(65) chr(97) chr(48)
ord('A') ord('a') ord('0')
bin(10) bin(255)
"-".join(["a", "b", "c"]) " ".join(["Hello", "World"]) "".join(['1','2','3'])
|
9. Lambda 函式
Lambda 是一個簡單的匿名函式,常用於排序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| f = lambda x: x * 2 print(f(5))
add = lambda x, y: x + y print(add(3, 4))
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實作操作教學
作答系統說明
系統環境
四. 題目實作
初級
中級