Giải Tin Học 10 trang 98
Lời giải chi tiết SGK Lớp 10 · Môn Tin Há»c · Trang 98–101
Bài 18: Các lệnh vào ra đơn giản
⚠️ Một số đoạn mã trong bản scan bị nhiễu (lỗi font). Cô đã phục dựng lại theo đúng nội dung chuẩn của bài học. Những chỗ đề bài không đọc rõ, cô sẽ nói rõ và hướng dẫn phương pháp để em tự kiểm tra.
🔍 Kiến thức cần nhớ
1. Hai lệnh vào ra đơn giản
print(...)→ đưa dữ liệu ra màn hình. Có thể in một hay nhiều dữ liệu, cả biểu thức tính toán.input(...)→ nhập dữ liệu vào từ bàn phím.
Cú pháp lệnh nhập:
= input()
💡 Mẹo nhớ: input = nhập vào, print = in ra.
2. Đặc điểm quan trọng của input()
⚠️ Lưu ý thi: Dữ liệu nhập từ bàn phím bằng input() luôn luôn là xâu kí tự (str), kể cả khi em gõ vào con số. Đây là lỗi sai kinh điển.
3. Nhận biết kiểu dữ liệu – lệnh type()
Kiểu Tên trong Python Ý nghĩa Số nguyên int10, -5, 2026 Số thực float5.0, 12.35 Xâu kí tự str"One", "Hà Nội" Lôgic boolchỉ có True / False
4. Ba lệnh chuyển đổi kiểu
int(...) → chuyển số thực hoặc xâu chứa số nguyên thành số nguyên (cắt phần thập phân khi đầu vào là số thực).float(...) → chuyển số nguyên hoặc xâu chứa số thành số thực.str(...) → chuyển dữ liệu kiểu khác thành xâu.
⚠️ Lưu ý thi: int() và float() chỉ chuyển được xâu ghi giá trị số trực tiếp, không xử lý xâu là biểu thức ("12+45") hay sai định dạng ("12,5").
⚙️ Bài tập
Câu Khởi động (trang 98)
Đề bài: Em dự đoán lệnh nhập dữ liệu input() có cú pháp và chức năng như thế nào?
Trả lời:
Lệnh input() dùng để nhập dữ liệu từ bàn phím vào chương trình khi đang chạy. Cú pháp:
= input()
Khi gặp lệnh này, chương trình tạm dừng chờ người dùng gõ dữ liệu rồi nhấn Enter; giá trị nhập vào được lưu vào biến dưới dạng xâu kí tự.
Câu Hoạt động 1 — Tìm hiểu chức năng của lệnh input()
Đề bài: Quan sát lệnh:
>>> x = input("Nhập số: ")
12
>>> x
'12'
Lệnh input() cho phép nhập dữ liệu từ đâu? Giá trị được nhập sẽ là số hay xâu?
Trả lời:
- Lệnh
input() cho phép nhập dữ liệu từ thiết bị vào chuẩn, thường là bàn phím. - Giá trị nhập vào luôn là xâu kí tự (str). Trong ví dụ trên, dù ta gõ
12 nhưng kết quả trả về là '12' (có dấu nháy → là xâu, không phải số).
Câu Hoạt động 2 — Nhận biết kiểu dữ liệu của biến
Đề bài: Quan sát các lệnh sau để biết kiểu dữ liệu của mỗi biến và xác định kiểu, giá trị của các biểu thức.
>>> n, x, s = 10, 5.0, "One"
>>> type(n)
>>> type(x)
>>> type(s)
Phân tích:
n = 10 → kiểu int (số nguyên)x = 5.0 → kiểu float (số thực, có dấu chấm)s = "One" → kiểu str (xâu, trong dấu nháy)- Các biểu thức so sánh chỉ nhận giá trị
True / False → kiểu bool.
Phương pháp xác định kiểu và giá trị biểu thức (áp dụng cho các ý a, b, c, d):
Dấu hiệu Kiểu Số không có dấu chấm int Số có dấu chấm thập phân float Đặt trong dấu nháy " " hoặc ' ' str Phép so sánh (>, <, ==, !=) bool
Ví dụ minh hoạ cách trình bày:
-15 → kiểu int, giá trị -153 > 2 → kiểu bool, giá trị True5 < 0 → kiểu bool, giá trị False12.5 → kiểu float, giá trị 12.5"abc" → kiểu str, giá trị "abc"
💡 Mẹo nhớ: Cứ thấy dấu nháy là str, thấy phép so sánh là bool, thấy dấu chấm trong số là float.
Câu Hoạt động 3 — Tìm hiểu cách chuyển đổi giữa các kiểu dữ liệu
Đề bài:
- Có chuyển đổi dữ liệu kiểu này sang kiểu khác được không?
- Giả sử có biến
s với giá trị "100". Nếu muốn biến s có giá trị là số nguyên chứ không phải là xâu thì em phải làm gì?
Trả lời:
1. Có. Python cho phép chuyển đổi giữa các kiểu cơ bản bằng các lệnh int(), float(), str().
2. Dùng lệnh int() để chuyển xâu "100" thành số nguyên:
>>> s = "100"
>>> s = int(s)
>>> s
100
>>> type(s)
Câu hỏi (trang 100) — sau phần chuyển đổi kiểu
Đề bài:
- Mỗi lệnh sau sẽ trả lại các giá trị nào?
a) int(150)
b) int("1110")
c) float("15.0")
- Lệnh nào sau đây sẽ báo lỗi?
A) int("12.0")
B) float(13+1)
C) int(17.001)
Cách 1 — Áp dụng quy tắc chuyển đổi
Câu 1:
- a)
int(150) → 150 (số nguyên giữ nguyên). - b)
int("1110") → 1110 (xâu ghi số nguyên → chuyển được). - c)
float("15.0") → 15.0 (xâu ghi số thực → chuyển sang float).
Câu 2:
- A)
int("12.0") → BÁO LỖI. Vì int() không chuyển được xâu chứa số thực ("12.0"); nó chỉ chấp nhận xâu chứa số nguyên. - B)
float(13+1) → float(14) = 14.0, không lỗi. - C)
int(17.001) → 17, không lỗi (cắt phần thập phân).
→ Lệnh báo lỗi là A) int("12.0").
⚠️ Lưu ý thi: int("12.0") lỗi, nhưng int(12.0) (số thực, không có nháy) lại cho 12. Em phải phân biệt rõ xâu và số.
Câu Hoạt động 4 — Nhập dữ liệu kiểu số nguyên hoặc số thực
Đề bài: Dùng lệnh x = int("Nhập số: ") để nhập số cho biến x là đúng hay sai?
Trả lời: SAI.
Lý do: int("Nhập số: ") cố gắng chuyển chính xâu thông báo "Nhập số: " thành số → báo lỗi, và lệnh này cũng không hề nhập dữ liệu từ bàn phím.
Cách viết đúng là lồng input() bên trong int():
x = int(input("Nhập số nguyên: ")) # nhập số nguyên
y = float(input("Nhập số thực: ")) # nhập số thực
💡 Mẹo nhớ: Công thức "vàng" khi nhập số: - Số nguyên: int(input(...)) - Số thực: float(input(...))
Câu Thực hành — Nhiệm vụ 1
Đề bài: Viết chương trình nhập lần lượt ba số tự nhiên rồi in ra tổng của ba số này.
m = int(input("Nhập số thứ nhất: "))
n = int(input("Nhập số thứ hai: "))
p = int(input("Nhập số thứ ba: "))
print("Tổng ba số là:", m + n + p)
Giải thích: mỗi số nhập vào đều bọc trong int() để chuyển từ xâu sang số nguyên, sau đó cộng và in kết quả.
Câu Thực hành — Nhiệm vụ 2
Đề bài: Viết chương trình nhập họ tên, sau đó nhập tuổi của học sinh. Chương trình đưa ra thông báo, ví dụ: Bạn Nguyễn Hòa Bình 18 tuổi.
ten = input("Nhập họ tên: ")
tuoi = int(input("Nhập tuổi: "))
print("Bạn", ten, tuoi, "tuổi.")
Giải thích: họ tên là xâu nên giữ nguyên input(); tuổi là số nên dùng int(input(...)).
Câu Luyện tập 1
Đề bài: Những lệnh nào trong các lệnh sau sẽ báo lỗi?
a) int("12+45")
b) float(123.56)
c) float("123,5.5")
Cách 1 — Kiểm tra từng lệnh
- a)
int("12+45") → BÁO LỖI. int() không tính được biểu thức trong xâu, nó chỉ nhận xâu ghi đúng một số nguyên. - b)
float(123.56) → không lỗi, kết quả 123.56 (đầu vào đã là số thực). - c)
float("123,5.5") → BÁO LỖI. Xâu sai định dạng số (dùng dấu phẩy, lại có hai phần thập phân), float() không hiểu được.
→ Lệnh báo lỗi: a) và c).
⚠️ Lưu ý thi: Dạng "lệnh nào báo lỗi" rất hay ra. Quy tắc: int()/float() chỉ nuốt được xâu ghi đúng một con số. Có dấu +, dấu phẩy, chữ cái... là lỗi ngay.
Câu Luyện tập 2
Đề bài: Vì sao khi nhập một số thực cần viết lệnh float(input())?
Trả lời:
Vì lệnh input() luôn trả về xâu kí tự, không phải số. Nếu đem xâu đó tính toán như số thực sẽ sai hoặc báo lỗi. Do đó cần bọc thêm float() để chuyển xâu thành số thực, lúc đó mới thực hiện được các phép tính số học.
Câu Vận dụng 1
Đề bài: Viết chương trình nhập giá trị ss là số giây từ bàn phím. Thông báo ra màn hình thời gian ss giây này sau khi đổi thành ngày, giờ, phút, giây.
Cách 1 — Dùng phép chia lấy nguyên và lấy dư
Quy đổi: 1 ngày = 86400 giây, 1 giờ = 3600 giây, 1 phút = 60 giây.
ss = int(input("Nhập số giây: "))
ngay = ss // 86400
gio = (ss % 86400) // 3600
phut = (ss % 3600) // 60
giay = ss % 60
print(ss, "giây =", ngay, "ngày", gio, "giờ", phut, "phút", giay, "giây")
Giải thích:
// 86400 lấy số ngày trọn vẹn.% 86400 lấy phần giây còn lại, rồi // 3600 ra số giờ.- Tương tự cho phút và giây.
Cách 2 — Lần lượt "bóc tách" gọn hơn
ss = int(input("Nhập số giây: "))
giay = ss % 60; ss = ss // 60 # còn lại tính bằng phút
phut = ss % 60; ss = ss // 60 # còn lại tính bằng giờ
gio = ss % 24; ngay = ss // 24 # tách ngày
print(ngay, "ngày", gio, "giờ", phut, "phút", giay, "giây")
💡 Mẹo nhớ: Đổi đơn vị thời gian = liên tục % 60 (lấy phần lẻ) và // 60 (đẩy lên đơn vị lớn hơn).
Câu Vận dụng 2
Đề bài: Viết chương trình nhập ba số thực dương a, b, c và tính chu vi, diện tích của tam giác có độ dài các cạnh là a, b, c (a, b, c > 0 và thoả mãn bất đẳng thức tam giác).
Gợi ý: Công thức Heron S = √(p(p−a)(p−b)(p−c)), với p là nửa chu vi tam giác.
Cách 1 — Tính trực tiếp theo công thức Heron
a = float(input("Nhập cạnh a: "))
b = float(input("Nhập cạnh b: "))
c = float(input("Nhập cạnh c: "))
chu_vi = a + b + c
p = chu_vi / 2 # nửa chu vi
S = (p * (p - a) * (p - b) * (p - c)) ** 0.5 # căn bậc hai = mũ 0.5
print("Chu vi tam giác =", chu_vi)
print("Diện tích tam giác =", S)
Giải thích:
- Ba cạnh là số thực nên dùng
float(input(...)). ** 0.5 chính là lấy căn bậc hai (√).
Cách 2 — Có kiểm tra điều kiện tam giác
Đề bài nói a, b, c phải thoả bất đẳng thức tam giác (tổng hai cạnh bất kì lớn hơn cạnh còn lại), nên ta nên kiểm tra trước khi tính:
import math
a = float(input("Nhập cạnh a: "))
b = float(input("Nhập cạnh b: "))
c = float(input("Nhập cạnh c: "))
if a > 0 and b > 0 and c > 0 and a + b > c and a + c > b and b + c > a:
chu_vi = a + b + c
p = chu_vi / 2
S = math.sqrt(p * (p - a) * (p - b) * (p - c))
print("Chu vi =", chu_vi)
print("Diện tích =", S)
else:
print("Ba số đã nhập không tạo thành tam giác!")
⚠️ Lưu ý thi: Bất đẳng thức tam giác là tổng hai cạnh bất kì lớn hơn cạnh còn lại. Cách 2 an toàn hơn vì tránh tính căn của số âm.
🎯 Ghi nhớ: - input() luôn trả về xâu → muốn dùng làm số phải bọc int(input()) hoặc float(input()). - int() cắt phần thập phân của số thực; float() thêm phần thập phân; str() biến mọi thứ thành xâu. - int(), float() chỉ chuyển được xâu ghi đúng một con số; gặp biểu thức ("12+45"), dấu phẩy hay chữ cái là báo lỗi. - type() cho biết kiểu dữ liệu; phép so sánh luôn cho kiểu bool (True/False).
Chế độ đọc sách →
