Giải Tin Học 10 trang 92
Lời giải chi tiết SGK Lớp 10 · Môn Tin Há»c · Trang 92–97
Bài 17: BIẾN VÀ LỆNH GÁN
🔍 Kiến thức cần nhớ
1. Biến (Variable)
- Biến là tên định danh của một vùng nhớ dùng để lưu trữ giá trị dữ liệu
- Giá trị của biến có thể thay đổi khi thực hiện chương trình
- Trong Python, biến được tạo ra khi thực hiện lệnh gán
2. Cú pháp lệnh gán
=
- Python sẽ tính giá trị biểu thức bên phải, rồi gán kết quả cho biến bên trái
- Kiểu dữ liệu của biến được xác định tại thời điểm gán giá trị
3. Quy tắc đặt tên biến
- Chỉ gồm chữ cái tiếng Anh, chữ số (0-9), và dấu gạch dưới (_)
- Không bắt đầu bằng chữ số
- Phân biệt chữ hoa và chữ thường
- Không được trùng với từ khóa
4. Các phép toán trên kiểu số
| Phép toán | Ký hiệu | Ví dụ |
|---|---|---|
| Cộng | + | 5 + 3 = 8 |
| Trừ | - | 5 - 3 = 2 |
| Nhân | * | 5 * 3 = 15 |
| Chia | / | 5 / 2 = 2.5 |
| Chia lấy phần nguyên | // | 5 // 2 = 2 |
| Chia lấy dư | % | 5 % 2 = 1 |
| Lũy thừa | ** | 2 ** 3 = 8 |
5. Các phép toán trên xâu ký tự
- Nối xâu: dùng dấu + → "ab" + "cd" = "abcd"
- Lặp xâu: dùng dấu → "ab" 3 = "ababab"
6. Từ khóa
- Là các từ đặc biệt của ngôn ngữ lập trình
- Không được đặt tên biến trùng với từ khóa
- Ví dụ: if, else, for, while, True, False, None, and, or, not...
💡 Mẹo nhớ: Thứ tự ưu tiên phép toán: Lũy thừa → Nhân/Chia → Cộng/Trừ (nhớ: "Lũy Nhân Cộng")
⚠️ Lưu ý thi: Phép lũy thừa thực hiện từ phải sang trái, các phép khác từ trái sang phải!
⚙️ Bài tập
Câu 1 (Hoạt động 1 - Trang 93)
Đề bài: Các tên biến nào dưới đây là hợp lệ trong Python?
- A. _name
- B. abc
- C. My country
- D. m&b
- E. xyzABC
Cách 1 — Kiểm tra theo quy tắc đặt tên biến
Quy tắc: Tên biến chỉ gồm chữ cái, chữ số, dấu gạch dưới; không bắt đầu bằng số; không chứa ký tự đặc biệt hay khoảng trắng.
| Tên | Phân tích | Kết luận |
|---|---|---|
| A. _name | Bắt đầu bằng dấu gạch dưới, chỉ gồm chữ cái và _ | ✅ Hợp lệ |
| B. abc | Chỉ gồm chữ cái | ✅ Hợp lệ |
| C. My country | Chứa khoảng trắng | ❌ Không hợp lệ |
| D. m&b | Chứa ký tự & (ký tự đặc biệt) | ❌ Không hợp lệ |
| E. xyzABC | Chỉ gồm chữ cái (hoa và thường) | ✅ Hợp lệ |
Cách 2 — Kiểm tra nhanh bằng loại trừ
Loại ngay những tên có:
- Khoảng trắng → loại C
- Ký tự đặc biệt (ngoài _) → loại D
Đáp án: A, B, E là hợp lệ
Câu 2 (Hoạt động 1 - Trang 93)
Đề bài: 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*x*2 - 1
>>> x = y/2 + x
Cách 1 — Thực hiện tuần tự từng lệnh
Bước 1: x = 10
- x = 10
Bước 2: y = xx2 - 1
- y = 10 × 10 × 2 - 1
- y = 100 × 2 - 1
- y = 200 - 1
- y = 199
Bước 3: x = y/2 + x
- x = 199/2 + 10
- x = 99.5 + 10
- x = 109.5
Cách 2 — Lập bảng theo dõi giá trị
| Lệnh | x | y |
|---|---|---|
| x = 10 | 10 | chưa xác định |
| y = xx2 - 1 | 10 | 199 |
| x = y/2 + x | 109.5 | 199 |
Đáp án: x = 109.5, y = 199
Câu 3 (Hoạt động 1 - Trang 93)
Đề bài: a, b nhận giá trị gì sau các lệnh sau?
>>> a, b = 2, 3
>>> a, b = a + b, a
Cách 1 — Phân tích lệnh gán đồng thời
Bước 1: a, b = 2, 3
- a = 2, b = 3
Bước 2: a, b = a + b, a
Quan trọng: Trong lệnh gán đồng thời, Python tính tất cả giá trị bên phải trước, rồi mới gán cho các biến bên trái.
- Vế phải: a + b = 2 + 3 = 5; a = 2
- Sau đó gán: a = 5, b = 2
Cách 2 — Hiểu như hoán đổi có tính toán
Lệnh này thực chất là:
- Tính tổng cũ (a + b) gán cho a mới
- Giữ giá trị a cũ gán cho b mới
| Lệnh | a | b |
|---|---|---|
| a, b = 2, 3 | 2 | 3 |
| a, b = a + b, a | 5 | 2 |
Đáp án: a = 5, b = 2
⚠️ Lưu ý thi: Lệnh gán đồng thời rất hay ra trong đề thi! Nhớ tính hết vế phải trước rồi mới gán.
Câu 1 (Hoạt động 2 - Trang 94)
Đề bài: Mỗi lệnh sau là đúng hay sai? Nếu đúng thì cho kết quả là bao nhiêu?
a) >>> (12 - 10//2)**2 - 1
Cách 1 — Thực hiện theo thứ tự ưu tiên
Bước 1: Tính trong ngoặc trước
- 10//2 = 5 (chia lấy phần nguyên)
- 12 - 5 = 7
Bước 2: Tính lũy thừa
- 7**2 = 49
Bước 3: Tính trừ
- 49 - 1 = 48
Cách 2 — Viết lại biểu thức rõ ràng
- (12 - 10//2)**2 - 1
- = (12 - 5)**2 - 1
- = 7² - 1
- = 49 - 1 = 48
Đáp án: Lệnh đúng, kết quả = 48
b) >>> (13 + 45**2)(30//12 - 5/2)
Cách 1 — Phân tích cú pháp
Quan sát biểu thức: (13 + 45**2)(30//12 - 5/2)
Đây là hai ngoặc đặt cạnh nhau mà không có phép toán ở giữa!
Trong toán học: (a)(b) = a × b, nhưng trong Python phải viết rõ dấu nhân.
Cách 2 — Kiểm tra nhanh
Python hiểu (biểu_thức_1)(biểu_thức_2) là gọi hàm, không phải phép nhân.
- Biểu thức đầu cho ra số (không phải hàm)
- Không thể "gọi" một số như hàm
Đáp án: Lệnh sai (lỗi cú pháp - thiếu phép toán giữa hai ngoặc)
💡 Mẹo nhớ: Trong Python phải viết rõ dấu * khi nhân, không được viết liền ngoặc như toán học!
Câu 2 (Hoạt động 2 - Trang 94)
Đề bài: Mỗi lệnh sau cho kết quả là xâu ký tự như thế nào?
a) >>> ""*20 + "010"
Cách 1 — Thực hiện từng phép toán
Bước 1: ""*20
- "" là xâu rỗng (không có ký tự nào)
- Xâu rỗng lặp 20 lần vẫn là xâu rỗng: ""
Bước 2: "" + "010"
- Nối xâu rỗng với "010"
- Kết quả: "010"
Cách 2 — Nhận xét nhanh
Xâu rỗng nhân với số bất kỳ vẫn là xâu rỗng, nên kết quả chỉ là phần cộng thêm.
Đáp án: "010" (hoặc viết là '010')
b) >>> "10"+"0"*5
Cách 1 — Thực hiện theo thứ tự ưu tiên
Bước 1: "0"*5 (phép nhân ưu tiên hơn phép cộng)
- Lặp xâu "0" năm lần: "00000"
Bước 2: "10" + "00000"
- Nối hai xâu: "1000000"
Cách 2 — Đếm ký tự
- "10" có 2 ký tự
- "0"*5 có 5 ký tự "0"
- Tổng: 2 + 5 = 7 ký tự
Đáp án: "1000000" (số 1 triệu viết dạng xâu)
Câu hỏi (Hoạt động 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
Cách 1 — Đối chiếu với danh sách từ khóa
Từ khóa Python 3.x: False, break, else, if, not, as, from, while, return, None, class, except, import, or, assert, global, with, True, continue, in, pass, del, lambda, and, def, for, is, raise, elif, nonlocal...
| Tên | Phân tích | Kết luận |
|---|---|---|
| a) _if | Có dấu gạch dưới ở đầu, khác với từ khóa "if" | ✅ Hợp lệ |
| b) global | Trùng với từ khóa global | ❌ Không hợp lệ |
| c) nolocal | Khác với từ khóa nonlocal (thiếu chữ n) | ✅ Hợp lệ |
| d) return | Trùng với từ khóa return | ❌ Không hợp lệ |
| e) true | Khác với từ khóa True (Python phân biệt hoa/thường) | ✅ Hợp lệ |
Cách 2 — Kiểm tra nhanh
- Thêm ký tự vào từ khóa → hợp lệ (như _if)
- Viết sai chính tả từ khóa → hợp lệ (như nolocal, true)
- Viết đúng từ khóa → không hợp lệ (như global, return)
Đáp án:
- Hợp lệ: a) _if, c) nolocal, e) true
- Không hợp lệ: b) global, d) return
⚠️ Lưu ý thi: Python phân biệt hoa/thường nêntrue≠True,false≠False
LUYỆN TẬP
Câu 1 (Trang 96)
Đề bài: Lệnh sau có lỗi gì?
>>> x = 1
>>> 123 = x + 1
^
SyntaxError
Cách 1 — Phân tích cú pháp lệnh gán
Cú pháp lệnh gán:
Lệnh 1: x = 1 → Đúng (x là tên biến hợp lệ)
Lệnh 2: 123 = x + 1 → Sai
- Vế trái phải là tên biến
123là một số, không phải tên biến- Tên biến không được bắt đầu bằng chữ số
Cách 2 — Hiểu bản chất
Lệnh gán là "đặt giá trị vào ô nhớ có tên là biến". Số 123 không phải là tên ô nhớ, nên không thể gán giá trị cho nó.
Đáp án: Lỗi cú pháp (SyntaxError) - Không thể dùng số làm tên biến (vế trái của phép gán phải là tên biến hợp lệ)
Câu 2 (Trang 96)
Đề bài: Lệnh sau sẽ in ra kết quả gì?
>>> print("Tin học"*3 + "10 "*2)
Cách 1 — Thực hiện từng phép toán
Bước 1: Tính "Tin học"*3
- Lặp xâu "Tin học" 3 lần
- Kết quả: "Tin họcTin họcTin học"
Bước 2: Tính "10 "*2
- Lặp xâu "10 " (có dấu cách) 2 lần
- Kết quả: "10 10 "
Bước 3: Nối hai xâu
- "Tin họcTin họcTin học" + "10 10 "
- Kết quả: "Tin họcTin họcTin học10 10 "
Cách 2 — Phân tích cấu trúc
| Phần | Nội dung | Số lần | Kết quả |
|---|---|---|---|
| "Tin học" | 7 ký tự | ×3 | 21 ký tự |
| "10 " | 3 ký tự | ×2 | 6 ký tự |
Đáp án: Tin họcTin họcTin học10 10
VẬN DỤNG
Câu 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 = 684245 thì kết quả in ra: 684245 giây = 7 ngày 22 giờ 4 phút 5 giây
Cách 1 — Sử dụng phép chia lấy phần nguyên và lấy dư
Phân tích:
- 1 phút = 60 giây
- 1 giờ = 3600 giây (60 × 60)
- 1 ngày = 86400 giây (24 × 3600)
Chương trình:
ss = 684245
# Tính số ngày
ngay = ss // 86400
# Tính số giờ (từ phần dư sau khi lấy ngày)
gio = (ss % 86400) // 3600
# Tính số phút (từ phần dư sau khi lấy giờ)
phut = (ss % 3600) // 60
# Tính số giây còn lại
giay = ss % 60
# In kết quả
print(ss, "giây =", ngay, "ngày", gio, "giờ", phut, "phút", giay, "giây")
Cách 2 — Tính tuần tự, trừ dần
ss = 684245
ss_goc = ss # Lưu lại giá trị gốc để in
ngay = ss // 86400
ss = ss - ngay * 86400 # Trừ đi số giây đã tính thành ngày
gio = ss // 3600
ss = ss - gio * 3600 # Trừ đi số giây đã tính thành giờ
phut = ss // 60
giay = ss % 60
print(ss_goc, "giây =", ngay, "ngày", gio, "giờ", phut, "phút", giay, "giây")
Kiểm tra với ss = 684245:
- ngay = 684245 // 86400 = 7
- gio = (684245 % 86400) // 3600 = 79445 // 3600 = 22
- phut = (684245 % 3600) // 60 = 245 // 60 = 4
- giay = 684245 % 60 = 5
Kết quả: 684245 giây = 7 ngày 22 giờ 4 phút 5 giây ✓
💡 Mẹo nhớ: Đổi đơn vị thời gian: chia lấy nguyên (//) để lấy đơn vị lớn, chia lấy dư (%) để lấy phần còn lại!
Câu 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
Cách 1 — Thực hiện tuần tự
Trước khi thực hiện: x, y chưa được khởi tạo
Sau lệnh 1: x, y = 10, 7
- x = 10
- y = 7
Sau lệnh 2: x, y = y, x
- Vế phải được tính trước: y = 7, x = 10
- Gán đồng thời: x = 7, y = 10
Cách 2 — Lập bảng theo dõi
| Thời điểm | x | y |
|---|---|---|
| Trước lệnh 1 | chưa xác định | chưa xác định |
| Sau lệnh 1 | 10 | 7 |
| Sau lệnh 2 | 7 | 10 |
Đáp án:
- Trước: x, y chưa có giá trị
- Sau lệnh 1: x = 10, y = 7
- Sau lệnh 2: x = 7, y = 10
Nhận xét: Lệnh x, y = y, x thực hiện hoán đổi giá trị của hai biến x và y!
💡 Mẹo nhớ: Trong Python, hoán đổi hai biến rất đơn giản: a, b = b, a. Không cần biến tạm như các ngôn ngữ khác!
⚠️ Lưu ý thi: Đây là kỹ thuật quan trọng, thường dùng trong các thuật toán sắp xếp!
🎯 Ghi nhớ
- Biến là tên của vùng nhớ, giá trị có thể thay đổi trong chương trình
- Quy tắc đặt tên biến: Chỉ dùng chữ cái, số, dấu _; không bắt đầu bằng số; phân biệt hoa/thường; không trùng từ khóa
- Lệnh gán đồng thời
a, b = x, ytính hết vế phải trước rồi mới gán
- Thứ tự ưu tiên phép toán: Lũy thừa (*) → Nhân/Chia (,/,//,%) → Cộng/Trừ (+,-)
- Phép lũy thừa thực hiện từ phải sang trái (khác các phép khác)
- Phép toán trên xâu: + để nối, * để lặp
