Giải Tin Học 10 trang 90
Lời giải chi tiết SGK Lớp 10 · Môn Tin Há»c · Trang 90–91
Nguon: Tin Hoc 10 - Ket Noi Tri Thuc Voi Cuoc Song (trang 90 – 91)
⚠️ Lưu ý: Ảnh gửi gồm trang 89 và 90. Phần dưới giải đầy đủ tất cả câu hỏi, bài tập trong hai trang này.
🔍 Kiến thức cần nhớ
- Khi nhập số hoặc xâu kí tự từ dòng lệnh, Python tự nhận biết kiểu dữ liệu.
- Python phân biệt số nguyên (int) và số thực (float).
- Phép chia
/trong Python luôn trả về số thực (float), kể cả khi chia hết. - Lệnh
print()dùng để in (xuất) dữ liệu ra màn hình, có thể in một hoặc nhiều giá trị cùng lúc. Cú pháp:print(v1, v2, ..., vn). - Khi in nhiều giá trị, các giá trị cách nhau bằng một dấu cách.
- Lệnh
print()có thể tính toán và đưa ra kết quả của biểu thức.
💡 Mẹo nhớ: Trong Python 3, dấu/luôn cho kết quả số thực. Muốn chia lấy phần nguyên dùng//.
⚙️ Bài tập
(Trang 89) Câu hỏi
Câu 1
Đề bài: Kết quả của mỗi lệnh sau là gì? Kết quả đó có kiểu dữ liệu nào?
>>> 5/2
>>> 12 + 1.5
>>> "Bạn là học sinh lớp 10"
>>> 10 + 7/2
Cách 1 — Tính trực tiếp từng lệnh
Lệnh 5/2:
- Phép chia
/luôn cho số thực. - Kết quả: 2.5 — kiểu số thực (float).
Lệnh 12 + 1.5:
- Một số nguyên cộng một số thực → kết quả là số thực.
- 12 + 1.5 = 13.5 — kiểu số thực (float).
Lệnh "Bạn là học sinh lớp 10":
- Đây là một dãy kí tự đặt trong cặp dấu nháy kép.
- Kết quả: 'Bạn là học sinh lớp 10' — kiểu xâu kí tự (str).
Lệnh 10 + 7/2:
- Theo thứ tự ưu tiên: thực hiện
7/2trước = 3.5 (số thực). - Sau đó: 10 + 3.5 = 13.5 — kiểu số thực (float).
⚠️ Lưu ý thi: Nhiều bạn nhầm5/2 = 2. Trong Python,5/2ra 2.5 vì/luôn cho số thực. Nếu cần kết quả nguyên2thì phải dùng5//2.
Câu 2
Đề bài: Lệnh sau sẽ in ra kết quả gì?
>>> print("13 + 10*3/2 - 3*2 = ", 13 + 10*3/2 - 3*2)
Cách 1 — Phân tích hai phần của lệnh
Lệnh print() nhận hai giá trị, cách nhau bởi dấu phẩy:
- Phần thứ nhất là một xâu kí tự
"13 + 103/2 - 32 = "→ in nguyên văn. - Phần thứ hai là một biểu thức → Python sẽ tính rồi in kết quả.
Tính biểu thức 13 + 103/2 - 32 theo thứ tự ưu tiên (×, ÷ trước; +, − sau):
- 10 × 3 = 30
- 30 / 2 = 15.0 (số thực, do có phép chia)
- 3 × 2 = 6
- 13 + 15.0 − 6 = 22.0
Kết quả in ra màn hình:
13 + 10*3/2 - 3*2 = 22.0
💡 Mẹo nhớ: Phần trong dấu nháy được in y nguyên; phần ngoài dấu nháy được Python tính toán. Kết quả là 22.0 (số thực) chứ không phải 22, vì biểu thức có chứa phép chia /.
(Trang 89) Thực hành
Đề bài: Tạo, nhập và chạy chương trình đầu tiên có tên Bai1.py.
Nội dung chương trình:
# Chương trình đầu tiên
print("Xin chào!")
Các bước thực hiện:
- Bước 1: Nháy đúp chuột vào biểu tượng Python để khởi động.
- Bước 2: Chọn File/New để mở chế độ soạn thảo chương trình.
- Bước 3: Nhập nội dung chương trình như trên.
- Bước 4: Chọn File/Save hoặc nhấn Ctrl + S để lưu tệp với tên
Bai1.py. - Bước 5: Chọn Run/Run Module hoặc nhấn F5 để chạy chương trình.
- Bước 6: Kết thúc phiên làm việc bằng cách nháy nút × hoặc gõ
quit()/exit()rồi nhấn ENTER.
Kết quả khi chạy:
Xin chào!
💡 Mẹo nhớ: Kí hiệu#đánh dấu dòng chú thích — Python bỏ qua phần sau#, không thực hiện. Chú thích dùng để ghi giải thích cho người đọc chương trình.
(Trang 90) Luyện tập
Câu 1
Đề bài: Hãy viết lệnh để tính giá trị các biểu thức sau trong chế độ gõ lệnh trực tiếp của Python:
a) 10 + 13
b) 20 − 7
c) 3 × 10 − 16
d) 12/5 + 13/6
Cách 1 — Dùng phép toán cơ bản của Python
a) 10 + 13
>>> 10 + 13
23
b) 20 − 7
>>> 20 - 7
13
c) 3 × 10 − 16 (dấu nhân viết là *)
>>> 3 * 10 - 16
14
d) 12/5 + 13/6
>>> 12/5 + 13/6
4.566666666666666
Giải thích câu d:
- 12/5 = 2.4
- 13/6 = 2.16666...
- Tổng = 4.566666666666666 (kiểu số thực)
⚠️ Lưu ý thi: Dấu nhân trong Python là*, không phải×. Viết×sẽ báo lỗi cú pháp.
Câu 2
Đề bài: Các lệnh sau có lỗi không? Vì sao?
>>> 3 + * 5
>>> "Bạn là học sinh, bạn tên là "Nguyễn Việt Anh""
Cách 1 — Phân tích cú pháp từng lệnh
*Lệnh 3 + 5: CÓ lỗi.**
- Sau dấu
+(toán tử cộng) lại xuất hiện ngay dấu*(toán tử nhân). - Hai toán tử đứng liền nhau mà giữa chúng không có toán hạng → lỗi cú pháp (SyntaxError).
Lệnh "Bạn là học sinh, bạn tên là "Nguyễn Việt Anh"": CÓ lỗi.
- Xâu mở đầu bằng dấu nháy kép, Python coi xâu là
"Bạn là học sinh, bạn tên là ". - Khi gặp dấu nháy kép thứ hai (trước chữ Nguyễn), Python tưởng xâu đã kết thúc, phần
Nguyễn Việt Anhcòn lại không hợp lệ → lỗi cú pháp.
Cách sửa lệnh thứ hai (dùng nháy đơn bao ngoài, nháy kép bên trong):
>>> 'Bạn là học sinh, bạn tên là "Nguyễn Việt Anh"'
⚠️ Lưu ý thi: Không được dùng cùng một loại dấu nháy ở trong và ngoài xâu. Muốn có dấu nháy kép bên trong, hãy bọc xâu bằng dấu nháy đơn (và ngược lại).
Câu 3
Đề bài: Viết các lệnh in ra màn hình thông tin như sau:
a) 1 × 3 × 5 × 7 = 105
b) Bạn Hoa năm nay 16 tuổi.
Cách 1 — Để Python tự tính phần số
a) Cho Python tính tích, còn phần chữ in nguyên văn:
>>> print("1 × 3 × 5 × 7 =", 1*3*5*7)
1 × 3 × 5 × 7 = 105
b)
>>> print("Bạn Hoa năm nay 16 tuổi.")
Bạn Hoa năm nay 16 tuổi.
Cách 2 — In toàn bộ dưới dạng xâu kí tự
a) Nếu chỉ cần hiển thị đúng dòng chữ, có thể viết hẳn thành một xâu:
>>> print("1 × 3 × 5 × 7 = 105")
1 × 3 × 5 × 7 = 105
💡 Mẹo nhớ: Cách 1 hay hơn vì để máy tự tính1357, tránh sai sót khi nhẩm. Dấu×ở đây chỉ là kí tự nằm trong xâu để hiển thị đẹp, còn phép nhân thật sự dùng.
(Trang 90) Vận dụng
Câu 1
Đề bài: Ngoài cách viết xâu giữa cặp dấu nháy đơn hoặc nháy kép, còn có thể viết giữa cặp ba dấu nháy kép. Khi đó có thể dùng phím Enter để xuống dòng ngay trong xâu. Hãy thực hiện lệnh sau và quan sát kết quả:
>>> print("""Không có việc gì khó
Chỉ sợ lòng không bền
Đào núi và lấp biển
Quyết chí ắt làm nên""")
Cách 1 — Thực hiện và quan sát
Khi dùng cặp ba dấu nháy kép """...""", Python giữ nguyên cách xuống dòng bên trong xâu. Kết quả in ra:
Không có việc gì khó
Chỉ sợ lòng không bền
Đào núi và lấp biển
Quyết chí ắt làm nên
💡 Mẹo nhớ: Xâu trong cặp ba dấu nháy ("""..."""hoặc'''...''') cho phép viết nhiều dòng, rất tiện để in đoạn thơ, đoạn văn dài.
Câu 2
Đề bài: Viết chương trình Python in ra màn hình bảng nhân trong phạm vi 10.
Cách 1 — Dùng hai vòng lặp lồng nhau (cơ bản)
# In bảng nhân từ 1 đến 10
for i in range(1, 11): # i là số ở mỗi bảng nhân
for j in range(1, 11): # j là số nhân từ 1 đến 10
print(i, "x", j, "=", i*j)
print() # in dòng trống ngăn cách các bảng
Giải thích:
- Vòng lặp ngoài
ichạy từ 1 đến 10 → ứng với bảng nhân 1, 2, ..., 10. - Vòng lặp trong
jchạy từ 1 đến 10 → in các tíchi*j. range(1, 11)cho dãy 1, 2, ..., 10 (không lấy 11).- Lệnh
print()cuối in một dòng trống để các bảng nhìn rõ ràng hơn.
Một phần kết quả (bảng nhân 2):
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
...
2 x 10 = 20
Cách 2 — In bảng nhân dạng lưới (gọn, đẹp hơn)
# In bảng nhân dạng bảng vuông 10 x 10
for i in range(1, 11):
for j in range(1, 11):
print(i*j, end="\t") # \t là kí tự Tab, căn cột thẳng hàng
print() # xuống dòng sau mỗi hàng
Giải thích:
- Tham số
end="\t"thay cho việc xuống dòng mặc định, giúp các tích cùng một hàng nằm trên một dòng, cách nhau bằng dấu Tab. - Sau khi in xong một hàng (vòng
jkết thúc),print()đưa con trỏ xuống dòng mới.
Kết quả là một bảng vuông gồm các tích từ 1×1 đến 10×10 thẳng hàng theo cột.
💡 Mẹo nhớ:end="\t"vàend=" "giúp đổi cách kết thúc lệnhprint()— mặc địnhprint()luôn tự xuống dòng (end="\n").
⚠️ Lưu ý thi: Phải viết đúngrange(1, 11)mới lấy đủ từ 1 đến 10. Nếu viếtrange(1, 10)sẽ thiếu số 10.
🎯 Ghi nhớ: - Phép/trong Python luôn cho số thực →5/2 = 2.5. - Lệnhprint()in phần trong dấu nháy nguyên văn, còn phần ngoài dấu nháy được tính toán. - Dấu nhân là*, dấu×chỉ dùng làm kí tự hiển thị trong xâu. - Không dùng trùng loại dấu nháy trong và ngoài xâu. - Cặp ba dấu nháy cho phép viết xâu nhiều dòng. - Dùng vòng lặp lồng nhau để in bảng nhân; nhớrange(1, 11)để đủ 1 → 10.
