Chọn đến phần học sinh cần nhanh chóng thông qua mục lục bằng cách click đến phần đó
Câu hỏi mở đầu trang 91
Câu hỏi mở đầu
Đề bài: Trong Đại số, người ta dùng chữ để thay thế cho số cụ thể, ví dụ hằng đẳng thức $(a + b)^2 = a^2 + 2ab + b^2$ đúng cho mọi giá trị $a$, $b$. Trong các ngôn ngữ lập trình, người ta cũng dùng các kí tự hoặc nhóm các kí tự được gọi là biến (variable) để thay cho việc phải chỉ ra các giá trị dữ liệu cụ thể. Theo em, sử dụng biến có những lợi ích gì?
Lời giải:
Sử dụng biến trong lập trình có những lợi ích sau:
- Lưu trữ và sử dụng lại giá trị: Biến giúp lưu giá trị để dùng nhiều lần trong chương trình mà không cần nhập lại.
- Thay đổi giá trị dễ dàng: Khi cần tính với giá trị khác, chỉ cần thay đổi giá trị của biến, không phải sửa lại cả chương trình.
- Chương trình tổng quát hơn: Một chương trình dùng biến có thể giải được nhiều bài toán cùng dạng (giống như công thức Toán học).
- Dễ đọc, dễ hiểu: Đặt tên biến có ý nghĩa giúp người đọc hiểu chương trình nhanh hơn.
1. Biến và lệnh gán
Hoạt động 1 trang 91
Đề bài: Quan sát các lệnh sau, $n$ ở đây được hiểu là gì?
>>> n = 5
>>> n
5
>>> n + 3
8
Lời giải:
- Lệnh
n = 5là lệnh gán: gán giá trị $5$ cho biến $n$. - Sau lệnh gán, $n$ được hiểu là một biến lưu giá trị số nguyên bằng $5$.
- Khi gõ
n, Python in ra giá trị của $n$ là $5$. - Khi gõ
n + 3, Python lấy giá trị của $n$ (là $5$) cộng với $3$, kết quả là $8$.
→ Vậy $n$ là một biến kiểu số nguyên có giá trị bằng 5.
Câu hỏi củng cố mục 1 trang 93
Đề bài:
1. Các tên biến nào dưới đây là hợp lệ trong Python?
A. _name B. 12abc C. My country D. m123&b E. xyzABC
Lời giải:
Theo quy tắc đặt tên biến trong Python:
- Chỉ gồm chữ cái tiếng Anh, chữ số $0$ – $9$ và kí tự gạch dưới
_. - Không được bắt đầu bằng chữ số.
Xét từng tên:
| Tên biến | Hợp lệ? | Lý do |
|---|---|---|
_name |
✓ Hợp lệ | Bắt đầu bằng _, chỉ gồm chữ cái. |
12abc |
✗ Không hợp lệ | Bắt đầu bằng chữ số. |
My country |
✗ Không hợp lệ | Có dấu cách giữa hai từ. |
m123&b |
✗ Không hợp lệ | Có kí tự & (không thuộc kí tự cho phép). |
xyzABC |
✓ Hợp lệ | Chỉ gồm chữ cái. |
→ Đáp án: A và E.
2. Sau các lệnh dưới đây, các biến x, y nhận giá trị bao nhiêu?
>>> x = 10
>>> y = x**2 - 1
>>> x = x/2 + y
Lời giải:
Lần lượt thực hiện từng lệnh:
- Lệnh 1:
x = 10→ $x = 10$. - Lệnh 2:
y = x**2 - 1→ $y = 10^2 – 1 = 100 – 1 = 99$. - Lệnh 3:
x = x/2 + y→ $x = \dfrac{10}{2} + 99 = 5 + 99 = 104$.
Chú ý: Vì có phép chia
/nên giá trị mới của $x$ có kiểu số thực: $x = 104.0$.
→ Kết quả: $x = 104.0$ và $y = 99$.
3. a, b nhận giá trị gì sau các lệnh sau?
>>> a,b = 2,3
>>> a,b = a+b, a-b
Lời giải:
- Lệnh 1:
a, b = 2, 3→ $a = 2$, $b = 3$. - Lệnh 2:
a, b = a+b, a-bPython sẽ tính toàn bộ vế phải trước, sau đó mới gán cho vế trái:- Vế phải: $a + b = 2 + 3 = 5$ và $a – b = 2 – 3 = -1$.
- Sau đó gán: $a = 5$, $b = -1$.
→ Kết quả: $a = 5$ và $b = -1$.
2. Các phép toán trên một số kiểu dữ liệu cơ bản
Câu hỏi củng cố mục 2 trang 94
Đề bài:
1. Mỗi lệnh sau là đúng hay sai? Nếu đúng thì cho kết quả là bao nhiêu?
>>> (12 - 10//2)**2 - 1
>>> (13 + 45**2)(30//12 - 5/2)
Lời giải:
Lệnh 1: (12 - 10//2)**2 - 1 → Đúng.
Tính theo thứ tự ưu tiên (** cao nhất, sau đó //, cuối cùng -):
- $10 // 2 = 5$ (lấy thương nguyên).
- $12 – 5 = 7$.
- $7^2 = 49$.
- $49 – 1 = 48$.
→ Kết quả: $48$.
Lệnh 2: (13 + 45**2)(30//12 - 5/2) → Sai cú pháp.
Lý do: Trong Python, phép nhân bắt buộc phải dùng dấu *. Không thể viết hai biểu thức trong ngoặc cạnh nhau như trong Toán học.
Cách sửa: Thêm dấu * ở giữa:
>>> (13 + 45**2)*(30//12 - 5/2)
2. Mỗi lệnh sau cho kết quả là xâu kí tự như thế nào?
>>> ""*20 + "010"
>>> "10"+"0"*5
Lời giải:
Lệnh 1: ""*20 + "010"
""*20: Xâu rỗng""lặp $20$ lần vẫn là xâu rỗng""."" + "010": Nối xâu rỗng với"010"→ kết quả"010".
→ Kết quả: '010'.
Lệnh 2: "10"+"0"*5
Theo thứ tự ưu tiên: phép * được thực hiện trước phép +.
"0"*5: Lặp xâu"0"năm lần →"00000"."10" + "00000": Nối hai xâu →"1000000".
→ Kết quả: '1000000'.
3. Từ khoá
Câu hỏi củng cố mục 3 trang 95
Đề bài: Các tên biến sau có hợp lệ không?
a) _if b) global c) nolocal d) return e) true
Lời giải:
Tên biến hợp lệ phải tuân theo quy tắc đặt tên và không được trùng với từ khoá của Python.
Đối chiếu với bảng từ khoá ở trang 95:
| Tên biến | Hợp lệ? | Lý do |
|---|---|---|
a) _if |
✓ Hợp lệ | Có dấu _ ở đầu nên khác từ khoá if. |
b) global |
✗ Không hợp lệ | Trùng với từ khoá global. |
c) nolocal |
✓ Hợp lệ | Không trùng từ khoá (từ khoá là nonlocal, có chữ n ở giữa). |
d) return |
✗ Không hợp lệ | Trùng với từ khoá return. |
e) true |
✓ Hợp lệ | Khác từ khoá True (Python phân biệt chữ hoa, chữ thường). |
→ Các tên hợp lệ: a) _if, c) nolocal, e) true.
Thực hành trang 95 – 96
Nhiệm vụ 1 trang 95
Đề bài: Thực hiện các phép tính sau trong môi trường lập trình Python, so sánh kết quả với việc tính biểu thức toán học:
a) $(1 + 2 + 3 + … + 10)^3$.
b) $\dfrac{1}{2} + \dfrac{1}{3} + \dfrac{1}{4} + \dfrac{1}{5}$.
c) Thực hiện lệnh gán $x = 2$, $y = 5$ rồi tính giá trị biểu thức $(x + y)(x^2 + y^2 – 1)$.
d) Thực hiện lệnh gán $a = 2$, $b = 3$, $c = 4$ rồi tính giá trị biểu thức $(a + b + c)(a + b – c)$.
Hướng dẫn thực hành:
Em mở Python ở chế độ gõ lệnh trực tiếp (sau dấu nhắc >>>) và gõ từng lệnh sau:
Câu a:
>>> (1+2+3+4+5+6+7+8+9+10)**3
166375
Kiểm tra: $1 + 2 + … + 10 = 55$, suy ra $55^3 = 166375$. ✓
Câu b:
>>> 1/2 + 1/3 + 1/4 + 1/5
1.2833333333333332
Kiểm tra: $\dfrac{1}{2} + \dfrac{1}{3} + \dfrac{1}{4} + \dfrac{1}{5} \approx 0.5 + 0.333 + 0.25 + 0.2 \approx 1.283$. ✓
Câu c:
>>> x, y = 2, 5
>>> (x+y)*(x**2+y**2-1)
196
Kiểm tra: $(2+5)(2^2 + 5^2 – 1) = 7 \times (4 + 25 – 1) = 7 \times 28 = 196$. ✓
Câu d:
>>> a, b, c = 2, 3, 4
>>> (a+b+c)*(a+b-c)
9
Kiểm tra: $(2+3+4)(2+3-4) = 9 \times 1 = 9$. ✓
Chú ý: Khi nhân hai biểu thức trong ngoặc, em phải dùng dấu
*ở giữa (ví dụ(x+y)*(x**2+y**2-1)), không được viết sát nhau như Toán học.
Nhiệm vụ 2 trang 96
Đề bài: Gán giá trị cho biến $R$ là bán kính hình tròn rồi viết chương trình tính và in ra kết quả theo mẫu:
Chu vi hình tròn là: .....
Diện tích hình tròn là: .....
Hướng dẫn thực hành:
Em mở chế độ soạn thảo (File / New File) rồi gõ chương trình sau:
R = 4.5
pi = 3.14
print("Chu vi hình tròn là:", 2*R*pi)
print("Diện tích hình tròn là:", pi*R*R)
Các bước thực hiện:
- Bước 1: Nhấn Ctrl + S để lưu chương trình (ví dụ tên
ChuViDienTich.py). - Bước 2: Nhấn F5 để chạy chương trình.
- Kết quả in ra trên cửa sổ Shell:
Chu vi hình tròn là: 28.26 Diện tích hình tròn là: 63.585
Giải thích công thức:
- Chu vi hình tròn: $C = 2 \pi R = 2 \times 3.14 \times 4.5 = 28.26$.
- Diện tích hình tròn: $S = \pi R^2 = 3.14 \times 4.5 \times 4.5 = 63.585$.
Em có thể thử thay đổi giá trị $R$ để tính chu vi, diện tích cho các hình tròn có bán kính khác nhau.
Luyện tập trang 96
Luyện tập 1 trang 96
Đề bài: Lệnh sau có lỗi gì?
>>> x = 1
>>> 123a = x + 1
SyntaxError: invalid syntax
Lời giải:
Lệnh 123a = x + 1 bị lỗi cú pháp (SyntaxError).
Lý do: Tên biến 123a bắt đầu bằng chữ số, vi phạm quy tắc đặt tên biến trong Python (tên biến không được bắt đầu bằng chữ số).
Cách sửa: Đổi tên biến sao cho không bắt đầu bằng chữ số, ví dụ a123:
>>> x = 1
>>> a123 = x + 1
Luyện tập 2 trang 96
Đề bài: Lệnh sau sẽ in ra kết quả gì?
>>> print("đồ rê mi "*3 + "pha son la si đô "*2)
Lời giải:
Phân tích từng phần (phép * thực hiện trước phép +):
"đồ rê mi "*3→ lặp xâu"đồ rê mi "ba lần →"đồ rê mi đồ rê mi đồ rê mi "."pha son la si đô "*2→ lặp xâu"pha son la si đô "hai lần →"pha son la si đô pha son la si đô ".- Phép
+nối hai xâu lại với nhau.
→ Kết quả in ra màn hình:
đồ rê mi đồ rê mi đồ rê mi pha son la si đô pha son la si đô
Vận dụng trang 96
Vận dụng 1 trang 96
Đề bài: Viết các lệnh để thực hiện việc đổi số giây $ss$ cho trước sang số ngày, giờ, phút, giây, in kết quả ra màn hình.
Ví dụ, nếu $ss = 684,500$ thì kết quả in ra như sau:
684500 giây = 7 ngày 22 giờ 8 phút 20 giây.
Gợi ý: Sử dụng phép lấy thương nguyên //, lấy số dư % và các cách đổi:
$$1 \text{ ngày} = 86,400 \text{ giây}; \quad 1 \text{ giờ} = 3,600 \text{ giây}; \quad 1 \text{ phút} = 60 \text{ giây}.$$
Lời giải:
Ý tưởng: Lần lượt lấy thương nguyên để biết số ngày, giờ, phút; lấy số dư để xử lý phần còn lại.
Em viết chương trình ở chế độ soạn thảo:
ss = 684500
ngay = ss // 86400 # Số ngày
ss = ss % 86400 # Số giây còn lại sau khi trừ số ngày
gio = ss // 3600 # Số giờ
ss = ss % 3600 # Số giây còn lại sau khi trừ số giờ
phut = ss // 60 # Số phút
giay = ss % 60 # Số giây còn lại
print("684500 giây =", ngay, "ngày", gio, "giờ", phut, "phút", giay, "giây.")
Kết quả khi chạy chương trình:
684500 giây = 7 ngày 22 giờ 8 phút 20 giây.
Giải thích cách tính từng bước:
| Bước | Phép tính | Kết quả |
|---|---|---|
| Số ngày | $684500 // 86400$ | $7$ |
| Giây còn lại | $684500 \% 86400$ | $79700$ |
| Số giờ | $79700 // 3600$ | $22$ |
| Giây còn lại | $79700 \% 3600$ | $500$ |
| Số phút | $500 // 60$ | $8$ |
| Số giây | $500 \% 60$ | $20$ |
→ Đáp án: $7$ ngày $22$ giờ $8$ phút $20$ giây.
Vận dụng 2 trang 96
Đề bài: Hãy cho biết trước và sau khi thực hiện các lệnh sau, giá trị các biến $x$, $y$ là bao nhiêu. Em có nhận xét gì về kết quả nhận được?
>>> x, y = 10, 7
>>> x, y = y, x
Lời giải:
Phân tích từng lệnh:
- Sau lệnh
x, y = 10, 7: $x = 10$ và $y = 7$. - Sau lệnh
x, y = y, x:- Python tính vế phải trước: lấy giá trị hiện tại của $y$ (là $7$) và $x$ (là $10$).
- Sau đó gán: $x = 7$ và $y = 10$.
| Trước khi thực hiện | Sau khi thực hiện | |
|---|---|---|
| $x$ | $10$ | $7$ |
| $y$ | $7$ | $10$ |
Nhận xét:
Lệnh x, y = y, x giúp tráo đổi (hoán đổi) giá trị của hai biến $x$ và $y$ mà không cần dùng biến trung gian. Đây là một cách viết rất gọn và hay được sử dụng trong Python.

Thầy Phạm Thành Danh
(Người kiểm duyệt, ra đề)
Chức vụ: Trưởng ban biên soạn môn Tin Học THPT
Trình độ: Cử nhân Sư phạm Tin học, Chứng chỉ hạng II, Chứng chỉ Tin học, Ngoại ngữ B1
Kinh nghiệm: 8+ năm kinh nghiệm tại Trường THPT Thuận Hóa
