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 97
Câu hỏi mở đầu
Đề bài: Để tương tác với người sử dụng trong khi thực hiện chương trình, các ngôn ngữ lập trình có các câu lệnh để đưa dữ liệu ra màn hình hay nhập dữ liệu vào từ bàn phím. Em đã biết Python có lệnh print() dùng để đưa dữ liệu ra màn hình. Để nhập dữ liệu từ bàn phím khi thực hiện chương trình, Python sử dụng câu lệnh input(). 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?
Lời giải:
Dự đoán về lệnh input():
- Chức năng: Cho phép người 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 dự đoán:
<biến> = input(<dòng thông báo>) - Cách hoạt động: Khi gặp lệnh
input(), chương trình sẽ hiện ra dòng thông báo, dừng lại chờ người dùng gõ dữ liệu từ bàn phím rồi nhấn Enter, sau đó lưu giá trị vừa nhập vào biến.
1. Các lệnh vào ra đơn giản
Hoạt động 1 trang 97
Đề bài: Quan sát lệnh sau và trả lời các câu hỏi: Lệnh input() cho phép nhập dữ liệu từ đâu? Giá trị được nhập sẽ là số hay xâu?
>>> input("Nhập một số: ")
Nhập một số: 12
'12'
Lời giải:
- Lệnh
input()cho phép nhập dữ liệu từ bàn phím. - Giá trị được nhập trả về là xâu kí tự (không phải số), vì kết quả trả về có dấu nháy
'12'.
→ Kết luận: Dù người dùng gõ vào số $12$, nhưng lệnh input() vẫn coi đó là xâu kí tự '12'.
2. Chuyển đổi kiểu dữ liệu cơ bản của Python
Hoạt động 2 trang 98
Đề bài: Chúng ta đã biết một số kiểu dữ liệu cơ bản như số nguyên, số thực và xâu kí tự. Trong Python có cách nào để nhận biết được kiểu dữ liệu của biến không?
Lời giải:
- Trong Python, để biết kiểu dữ liệu của một biến, ta dùng lệnh
type(). - Cú pháp:
type(<biến>).
Ví dụ:
>>> n = 10
>>> type(n)
<class 'int'> # n thuộc kiểu số nguyên (int)
>>> x = 1.8
>>> type(x)
<class 'float'> # x thuộc kiểu số thực (float)
>>> s = "One"
>>> type(s)
<class 'str'> # s thuộc kiểu xâu kí tự (str)
Câu hỏi củng cố mục 2 (phần kiểu dữ liệu) trang 98
Đề bài: Xác định kiểu và giá trị của các biểu thức sau:
a) "15 + 20 – 7" b) 32 > 45 c) 13 != 8 + 5 d) 1 == 2
Lời giải:
| Biểu thức | Kiểu | Giá trị | Giải thích |
|---|---|---|---|
a) "15 + 20 – 7" |
str (xâu kí tự) |
'15 + 20 – 7' |
Có dấu nháy kép nên là xâu, không tính toán. |
b) 32 > 45 |
bool (lôgic) |
False |
Vì $32$ không lớn hơn $45$. |
c) 13 != 8 + 5 |
bool (lôgic) |
False |
Vì $8 + 5 = 13$, mà $13 \neq 13$ là sai. |
d) 1 == 2 |
bool (lôgic) |
False |
Vì $1$ không bằng $2$. |
Chú ý: Kí hiệu
!=là khác nhau,==là bằng nhau trong Python.
Hoạt động 3 trang 98
Đề bài:
1. Có chuyển đổi dữ liệu kiểu này sang kiểu khác được không?
Lời giải: Có. Python cung cấp các lệnh để chuyển đổi giữa các kiểu dữ liệu cơ bản:
- Lệnh
int(): chuyển sang số nguyên. - Lệnh
float(): chuyển sang số thực. - Lệnh
str(): chuyển sang xâu kí tự.
2. Giả sử có biến s với giá trị "123". Nếu muốn biến s có giá trị là số nguyên $123$ chứ không phải là xâu "123" thì em phải làm gì?
Lời giải: Dùng lệnh int() để chuyển xâu "123" thành số nguyên $123$:
>>> s = "123"
>>> s = int(s)
>>> s
123
Sau lệnh trên, $s$ trở thành biến kiểu số nguyên có giá trị $123$.
Câu hỏi củng cố mục 2 (phần chuyển đổi) trang 99
Đề bài:
1. Mỗi lệnh sau sẽ trả lại các giá trị nào?
a) str(150) b) int("1110") c) float("15.0")
Lời giải:
| Lệnh | Kết quả | Giải thích |
|---|---|---|
a) str(150) |
'150' |
Chuyển số nguyên $150$ thành xâu kí tự '150'. |
b) int("1110") |
1110 |
Chuyển xâu "1110" thành số nguyên $1110$. |
c) float("15.0") |
15.0 |
Chuyển xâu "15.0" thành số thực $15.0$. |
2. Lệnh nào sau đây sẽ báo lỗi?
A. int("12.0") B. float(13+1) C. str(17.001)
Lời giải:
- A.
int("12.0")→ Báo lỗi. Vì lệnhint()không chuyển đổi được xâu chứa số thực (theo SGK trang 99). - B.
float(13+1)→ Đúng, kết quả $14.0$. - C.
str(17.001)→ Đúng, kết quả'17.001'.
→ Đáp án: A.
Hoạt động 4 trang 99
Đề bài: Dữ liệu nhập từ bàn phím bằng lệnh input() luôn là xâu kí tự nên muốn nhập dữ liệu đầu vào là số nguyên hay số thực thì phải làm thế nào?
Lời giải:
Vì lệnh input() luôn trả về xâu kí tự, nên muốn nhập dữ liệu là số, ta phải dùng thêm lệnh chuyển đổi kiểu:
- Nhập số nguyên: dùng
int(input(...)).>>> n = int(input("Nhập số tự nhiên: ")) - Nhập số thực: dùng
float(input(...)).>>> x = float(input("Nhập số thực x: "))
Câu hỏi củng cố mục 2 (sau Hoạt động 4) trang 100
Đề bài: Dùng lệnh x = input("Nhập số x:") để nhập số cho biến $x$ là đúng hay sai?
Lời giải:
→ Sai.
Giải thích: Lệnh input() luôn trả về xâu kí tự, nên biến $x$ sẽ là xâu chứ không phải số. Sau lệnh trên, không thể dùng $x$ để tính toán như một số được.
Cách sửa:
- Nếu cần nhập số nguyên:
x = int(input("Nhập số x: ")). - Nếu cần nhập số thực:
x = float(input("Nhập số x: ")).
Thực hành trang 100
Nhiệm vụ 1 trang 100
Đề bài: Viết chương trình nhập lần lượt ba số tự nhiên $m$, $n$, $p$, sau đó in ra tổng của ba số này.
Hướng dẫn thực hành:
Ý tưởng: Cần 3 lệnh input() để nhập $m$, $n$, $p$. Vì là số nguyên nên phải dùng thêm int() để chuyển đổi kiểu.
Em mở chế độ soạn thảo (File / New File) và gõ chương trình sau:
m = int(input("Nhập số nguyên m: "))
n = int(input("Nhập số nguyên n: "))
p = int(input("Nhập số nguyên p: "))
print("Tổng ba số đã nhập là:", m+n+p)
Các bước thực hiện:
- Bước 1: Nhấn Ctrl + S lưu tệp (ví dụ
TongBaSo.py). - Bước 2: Nhấn F5 chạy chương trình và lần lượt nhập ba số.
Ví dụ khi chạy (giả sử nhập $m = 5$, $n = 10$, $p = 7$):
Nhập số nguyên m: 5
Nhập số nguyên n: 10
Nhập số nguyên p: 7
Tổng ba số đã nhập là: 22
Nhiệm vụ 2 trang 100
Đề 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 Hoà Bình 15 tuổi.
Hướng dẫn thực hành:
Ý tưởng: Cần 2 lệnh nhập — một lệnh nhập họ tên (kiểu xâu, không cần chuyển đổi), một lệnh nhập tuổi (kiểu số nguyên, cần int()).
Em gõ chương trình sau:
ten = input("Nhập họ tên học sinh: ")
tuoi = int(input("Nhập tuổi: "))
print("Bạn", ten, tuoi, "tuổi")
Ví dụ khi chạy (nhập tên Nguyễn Hoà Bình và tuổi 15):
Nhập họ tên học sinh: Nguyễn Hoà Bình
Nhập tuổi: 15
Bạn Nguyễn Hoà Bình 15 tuổi
Chú ý: Họ tên là xâu kí tự nên không cần dùng
int(), còn tuổi là số nên phải dùngint(input(...)).
Luyện tập trang 100
Luyện tập 1 trang 100
Đề 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")
Lời giải:
Lệnh a) int("12+45") → Báo lỗi.
Lý do: Theo SGK trang 99, lệnh int() chỉ chuyển đổi được xâu ghi giá trị số trực tiếp, không chuyển đổi xâu có công thức. Xâu "12+45" là biểu thức nên bị lỗi.
Lệnh b) float(123.56) → Đúng, trả về $123.56$.
Lệnh c) float("123,5.5") → Báo lỗi.
Lý do: Xâu "123,5.5" không phải là dạng số thực hợp lệ (chứa cả dấu phẩy , và dấu chấm .).
→ Các lệnh báo lỗi: a) và c).
Luyện tập 2 trang 100
Đề bài: Vì sao khi nhập một số thực cần viết lệnh float(input())?
Lời giải:
- Lệnh
input()luôn trả về xâu kí tự, kể cả khi người dùng gõ vào số thực. - Nếu không chuyển đổi, ta không thể dùng giá trị đó để tính toán như một số thực được.
- Vì vậy, cần lệnh
float()bao bên ngoài để chuyển xâu thành số thực.
→ Lệnh float(input()) có nghĩa là: nhập xâu từ bàn phím, sau đó chuyển xâu đó thành số thực.
Vận dụng trang 100
Vận dụng 1 trang 100
Đề 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 thời gian tính bằng ngày, giờ, phút, giây.
Lời giải:
Ý tưởng: Dùng các phép toán lấy thương nguyên // và lấy số dư % để tách số giây thành ngày, giờ, phút, giây. Lưu ý 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}.$$
Chương trình:
ss = int(input("Nhập số giây ss: "))
ngay = ss // 86400
phan_du = ss % 86400
gio = phan_du // 3600
phan_du = phan_du % 3600
phut = phan_du // 60
giay = phan_du % 60
print(ss, "giây =", ngay, "ngày", gio, "giờ", phut, "phút", giay, "giây.")
Ví dụ khi chạy (nhập $ss = 684500$):
Nhập số giây ss: 684500
684500 giây = 7 ngày 22 giờ 8 phút 20 giây.
Chú ý: So với bài Vận dụng 1 ở Bài 17, ở đây ta dùng
int(input(...))để nhập $ss$ từ bàn phím thay vì gán cứng giá trị.
Vận dụng 2 trang 100
Đề 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 tính diện tích tam giác:
$$S = \sqrt{p(p – a)(p – b)(p – c)}$$
với $p$ là nửa chu vi tam giác.
Lời giải:
Ý tưởng:
- Nhập ba số thực $a$, $b$, $c$ → dùng
float(input(...)). - Tính chu vi: $C = a + b + c$.
- Tính nửa chu vi: $p = \dfrac{C}{2}$.
- Tính diện tích theo công thức Heron. Vì căn bậc hai $\sqrt{x} = x^{0.5}$, ta dùng phép luỹ thừa
**0.5.
Chương trình:
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 tam giác là:", chu_vi)
print("Diện tích tam giác là:", dien_tich)
Ví dụ khi chạy (nhập $a = 3$, $b = 4$, $c = 5$):
Nhập cạnh a: 3
Nhập cạnh b: 4
Nhập cạnh c: 5
Chu vi tam giác là: 12.0
Diện tích tam giác là: 6.0
Kiểm tra: Với tam giác vuông cạnh $3, 4, 5$:
- Chu vi: $3 + 4 + 5 = 12$.
- Nửa chu vi: $p = 6$.
- Diện tích: $S = \sqrt{6 \times (6-3) \times (6-4) \times (6-5)} = \sqrt{6 \times 3 \times 2 \times 1} = \sqrt{36} = 6$. ✓
Chú ý: Đề bài cho điều kiện $a, b, c > 0$ và thoả mãn bất đẳng thức tam giác, nên ta giả sử dữ liệu nhập vào đã hợp lệ, không cần kiểm tra điều kiện.

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
