Trả lời nhanh
Bài 18 xoay quanh một ý then chốt: lệnh input() nhập dữ liệu từ bàn phím và luôn trả về xâu kí tự (str). Muốn tính toán, em phải bọc thêm int() cho số nguyên hoặc float() cho số thực, ví dụ n = int(input("Nhập n: ")). Lệnh print() dùng để đưa kết quả ra màn hình.
Tóm tắt kiến thức cần nhớ trước khi làm bài
Muốn giải nhanh các câu hỏi trong bài, em chỉ cần nắm ba nhóm kiến thức dưới đây. Nếu muốn đọc kỹ hơn, em xem lý thuyết ở bài riêng: Lý thuyết Tin học 10 Bài 18.
- Lệnh nhập:
<biến> = input(<lời nhắc>). Lời nhắc là một xâu hiện ra màn hình để người dùng biết cần gõ gì. - Lệnh xuất:
print(<giá trị 1>, <giá trị 2>, ...). Các giá trị được in cách nhau một dấu cách và kết thúc bằng xuống dòng. - Hàm chuyển kiểu:
int(),float(),str(); hàmtype()cho biết kiểu của một giá trị.
| Hàm | Công dụng | Ví dụ | Kết quả |
|---|---|---|---|
int() |
Đổi sang số nguyên | int("1110") |
1110 (int) |
int() |
Số thực → số nguyên (bỏ phần thập phân) | int(3.9) |
3 (int) |
float() |
Đổi sang số thực | float("15.0") |
15.0 (float) |
str() |
Đổi sang xâu kí tự | str(150) |
“150” (str) |
Khởi động (trang 97)
Đề yêu cầu dự đoán cú pháp và chức năng của input(). Đã có print() để đưa dữ liệu ra, thì lệnh ngược lại phải đưa dữ liệu từ người dùng vào chương trình và lưu vào một biến.
- Cú pháp:
<biến> = input(<lời nhắc>) - Chức năng: hiển thị lời nhắc, chờ người dùng gõ từ bàn phím rồi nhấn Enter, sau đó gán những gì đã gõ cho biến.
1. Các lệnh vào ra đơn giản
Hoạt động 1 (trang 97)
Lệnh input() cho phép nhập dữ liệu từ đâu? Từ thiết bị vào chuẩn, thông thường là bàn phím.
Giá trị nhập là số hay xâu? Python luôn coi mọi thứ người dùng gõ là một xâu kí tự. Dù em gõ 25, biến nhận về là xâu "25" chứ chưa phải số 25. Đây là điểm dễ nhầm nhất của cả bài.
Mẹo nhớ: bàn phím chỉ gửi “chữ” cho máy; muốn máy hiểu đó là “số” thì em phải ra lệnh chuyển kiểu.
2. Chuyển đổi kiểu dữ liệu cơ bản của Python
Hoạt động 2 (trang 98)
Các kiểu dữ liệu cơ bản đã học: int (số nguyên), float (số thực), str (xâu kí tự), bool (lôgic: True/False). Để biết kiểu của một biến hay biểu thức, em dùng hàm type(), chẳng hạn type(5) cho <class 'int'>.
Câu hỏi (trang 98): Xác định kiểu và giá trị của biểu thức
| Biểu thức | Kiểu | Giá trị | Giải thích |
|---|---|---|---|
a) 15 + 20 - 7 |
int | 28 | 15 + 20 = 35, 35 − 7 = 28 |
b) 32 > 45 |
bool | False | 32 không lớn hơn 45 |
c) 13 != 8 + 5 |
bool | False | Vế phải là 13; hai số bằng nhau nên “khác nhau” là sai |
d) 1 == 2 |
bool | False | 1 và 2 không bằng nhau |
Lưu ý: nếu cả biểu thức ở câu a được đặt trong dấu nháy, tức "15 + 20 - 7", thì nó chỉ là một xâu kí tự (kiểu str) và Python không tính gì cả. Phép so sánh luôn cho kết quả kiểu bool.
Hoạt động 3 (trang 98)
1. Có chuyển được dữ liệu từ kiểu này sang kiểu khác không? Có. Ba hàm int(), float(), str() chuyển dữ liệu sang số nguyên, số thực và xâu kí tự tương ứng.
2. Biến s đang là xâu "123", muốn thành số nguyên 123? Viết s = int(s). Chỉ gọi int(s) thôi thì chưa thay đổi biến s; em phải gán kết quả lại.
Câu hỏi 1 (trang 99)
- a)
str(150)→"150", kiểu xâu kí tự. - b)
int("1110")→1110, số nguyên. - c)
float("15.0")→15.0, số thực.
Câu hỏi 2 (trang 99): Lệnh nào báo lỗi?
Đáp án: A. int("12.0").
- A (lỗi):
int()chỉ chấp nhận xâu có dạng số nguyên thuần túy. Xâu"12.0"có dấu chấm thập phân nên Python báoValueError. Muốn đúng phải viếtint(float("12.0")). - B (không lỗi):
13 + 1= 14 là số nguyên,float(14)cho14.0. - C (không lỗi):
str(17.001)cho xâu"17.001"; đổi sang xâu thì lúc nào cũng được.
3. Nhập dữ liệu số từ bàn phím
Hoạt động 4 (trang 99)
Vì input() trả về xâu, nên:
- nhập số nguyên:
n = int(input("Nhập n: ")) - nhập số thực:
x = float(input("Nhập x: "))
Hàm input() chạy trước, đưa ra xâu; hàm int() hoặc float() bao ngoài nhận xâu đó rồi đổi thành số.
Câu hỏi (trang 100)
Lệnh x = input("Nhập số x:") để nhập số cho biến x đúng hay sai? Sai. Lệnh này chỉ cho x là một xâu kí tự, không phải số. Hậu quả: nếu sau đó viết x + 1 thì Python báo lỗi vì không cộng được xâu với số; còn x + x với x = "5" lại cho "55" chứ không phải 10. Cách đúng: x = float(input("Nhập số x: ")) (hoặc int nếu x nguyên).
Luyện tập (trang 100)
Luyện tập 1: Lệnh nào báo lỗi?
| Lệnh | Kết quả | Lý do |
|---|---|---|
a) int("12 + 45") |
Lỗi | Xâu chứa biểu thức, không phải một số nguyên; Python không tự tính |
b) float(123.56) |
Không lỗi, ra 123.56 | Đổi số thực sang số thực là hợp lệ |
c) float("123,5.5") |
Lỗi | Có dấu phẩy và hai dấu chấm, không đúng dạng số thực |
Vậy các lệnh báo lỗi là a) và c).
Luyện tập 2: Vì sao nhập số thực cần viết float(input())?
Vì input() chỉ cho xâu, mà số thực cần ở kiểu float để tính toán được. Không dùng int(input()) vì khi người dùng gõ 3.5, lệnh int("3.5") sẽ báo lỗi (giống câu hỏi 2 ở trên). Hàm float() nhận được cả "3.5" lẫn "3".
Vận dụng (trang 100)
Vận dụng 1: Đổi số giây sang giờ – phút – giây
Ý tưởng: 1 giờ = 3600 giây, 1 phút = 60 giây. Dùng phép chia lấy phần nguyên // và chia lấy dư %.
ss = int(input("Nhập số giây: "))
gio = ss // 3600
phut = (ss % 3600) // 60
giay = ss % 60
print(ss, "giây =", gio, "giờ", phut, "phút", giay, "giây")
Kiểm tra bằng ví dụ: nhập 3725 → gio = 1 (còn dư 125), phut = 2, giay = 5. Kết quả: 3725 giây = 1 giờ 2 phút 5 giây. Thử lại: 3600 + 120 + 5 = 3725 ✓.
Vận dụng 2: Chu vi và diện tích tam giác theo ba cạnh
Ý tưởng: chu vi P = a + b + c. Diện tích dùng công thức Heron: nửa chu vi p = (a + b + c)/2, diện tích S = √(p(p − a)(p − b)(p − c)). Trong Python, căn bậc hai lấy bằng ** 0.5.
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
dien_tich = (p * (p - a) * (p - b) * (p - c)) ** 0.5
print("Chu vi =", chu_vi)
print("Diện tích =", dien_tich)
Chạy thử: a = 3, b = 4, c = 5 → chu vi 12.0; p = 6.0; tích 6 × 3 × 2 × 1 = 36; căn bằng 6.0. Đúng với tam giác vuông có diện tích (3 × 4)/2 = 6 ✓.
Đề bài nói ba số dương, và chương trình này giả định ba số đó tạo thành tam giác thật. Nếu a, b, c không thỏa bất đẳng thức tam giác thì biểu thức trong căn âm và kết quả không có nghĩa; phần kiểm tra điều kiện sẽ học ở Bài 19: Câu lệnh rẽ nhánh If.
Lỗi sai thường gặp ở bài này
- Quên chuyển kiểu: viết
a = input()rồia * 2. Vớia = "4"kết quả là"44", không phải 8. - Dùng
int()cho số thực:int(input())gặp2.5sẽ báo lỗi. Em hãy dùngfloat(). - Quên gán lại:
int(s)đứng một mình không đổi biếns. - Gõ dấu phẩy thập phân: Python chỉ nhận dấu chấm.
"3,5"không chuyển được bằngfloat(). - Nhầm
=và==:=là phép gán,==là so sánh bằng.
Bài luyện tập tự giải
- Cho đoạn lệnh:
a = input(),b = input(),print(a + b). Nhập 12 rồi 5, màn hình in gì? Sửa thế nào để in 17? - Lệnh nào báo lỗi:
int(3.9),float("abc"),int("7")? - Viết chương trình nhập tên và tuổi, in ra “Năm sau bạn … sẽ … tuổi”.
Đáp án gợi ý:
- In
125vì cộng hai xâu là ghép xâu. Sửa:a = int(input()),b = int(input())thì in 17. - Chỉ
float("abc")báo lỗi.int(3.9)cho 3 (bỏ phần thập phân, không làm tròn),int("7")cho 7. ten = input("Tên của bạn: ");tuoi = int(input("Tuổi: "));print("Năm sau", ten, "sẽ", tuoi + 1, "tuổi").
Các bài liên quan trong Tin học 10 Kết nối tri thức
- Bài 17: Biến và lệnh gán
- Bài 19: Câu lệnh rẽ nhánh If
- Bài 20: Câu lệnh lặp For
- Bài 21: Câu lệnh lặp While
- Trắc nghiệm Tin học 10 Bài 18 có đáp án
- Sách bài tập Tin học 10 Bài 18
- Giải SGK Tin học 10 – Kết nối tri thức (mục lục)
Cùng chuyên đề: Bài nằm trong mục lục Giải SGK Tin học 10 Bài 16 KNTT: Ngôn ngữ lập trình bậc cao và Python.
Câu hỏi thường gặp
Vì sao lệnh input() trong Python luôn trả về xâu kí tự?
Dữ liệu gõ từ bàn phím được Python xem là chuỗi kí tự. Python không đoán em muốn số hay chữ, nên em phải tự chuyển kiểu bằng int() hoặc float() khi cần tính toán.
Khi nào dùng int(input()), khi nào dùng float(input())?
Dùng int(input()) khi dữ liệu là số nguyên như số lượng, số giây, tuổi. Dùng float(input()) khi dữ liệu có thể có phần thập phân như độ dài, điểm, giá tiền.
Vì sao int("12.0") báo lỗi nhưng float("12") thì không?
int() chỉ nhận xâu dạng số nguyên thuần túy, còn xâu "12.0" có phần thập phân nên gây lỗi. float() nhận được cả xâu số nguyên lẫn số thực, nên float("12") cho 12.0. Muốn đổi "12.0" thành số nguyên, em viết int(float("12.0")).
Hàm type() dùng để làm gì?
type() cho biết kiểu dữ liệu của một giá trị hay biến, ví dụ int, float, str hoặc bool. Hàm này giúp em kiểm tra xem dữ liệu nhập vào đã được chuyển kiểu đúng chưa.