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 đó
- I. Lý thuyết trọng tâm
- 1. Lệnh nhập và xuất dữ liệu
- 2. Kiểu dữ liệu cơ bản và lệnh type()
- 3. Chuyển đổi kiểu dữ liệu
- 4. Nhập số nguyên và số thực từ bàn phím
- II. Phương pháp giải các dạng bài tập
- Dạng 1: Xác định kiểu dữ liệu và giá trị của biểu thức
- Dạng 2: Xác định lệnh chuyển đổi kiểu đúng/sai (báo lỗi hay không)
- Dạng 3: Viết chương trình nhập/xuất dữ liệu
- Dạng 4: Giải thích tại sao cần dùng int(input()) / float(input())
- III. Sơ đồ tư duy
- IV. Sai lầm thường gặp
I. Lý thuyết trọng tâm
1. Lệnh nhập và xuất dữ liệu
Để chương trình có thể tương tác với người dùng, Python cung cấp hai lệnh cơ bản:
| Lệnh | Chức năng | Thiết bị |
|---|---|---|
input() |
Nhập dữ liệu vào chương trình | Bàn phím (thiết bị vào chuẩn) |
print() |
Xuất dữ liệu ra ngoài | Màn hình (thiết bị ra chuẩn) |
a) Lệnh input() — nhập dữ liệu
Cú pháp:
<biến> = input(<Dòng thông báo>)
Khi gặp lệnh input(), chương trình sẽ dừng lại, hiển thị dòng thông báo và chờ người dùng gõ dữ liệu từ bàn phím. Sau khi nhấn Enter, nội dung vừa nhập được gán cho biến.
>>> input("Nhập một số: ")
Nhập một số: 12
'12'
Điểm cực kì quan trọng: Dù người dùng gõ số, biểu thức hay chữ, lệnh
input()luôn trả về xâu kí tự (string). Ở ví dụ trên, nhập12nhưng kết quả là'12'(xâu) chứ không phải số nguyên12.
b) Lệnh print() — xuất dữ liệu
Đã học ở Bài 16. Nhắc lại: print() có thể in một hoặc nhiều giá trị với các kiểu dữ liệu khác nhau, cho phép cả biểu thức tính toán. Các giá trị cách nhau bởi dấu phẩy sẽ được in trên cùng một dòng, phân cách bằng dấu cách.
name = input("Nhập họ tên em: ")
print("Xin chào", name)
2. Kiểu dữ liệu cơ bản và lệnh type()
a) Bốn kiểu dữ liệu cơ bản trong Python
| Tên kiểu | Viết tắt | Mô tả | Ví dụ |
|---|---|---|---|
| Số nguyên | int |
Các số không có phần thập phân | 10, -3, 0 |
| Số thực | float |
Các số có phần thập phân | 1.8, -0.5, 3.0 |
| Xâu kí tự | str |
Chuỗi kí tự đặt trong dấu nháy | "One", 'Tin học' |
| Logic | bool |
Chỉ có hai giá trị: True hoặc False |
True, False |
Kiểu logic (bool) thường xuất hiện dưới dạng kết quả của phép so sánh:
>>> 3 > 2
True
>>> 5 < 0
False
>>> b = 10 > 3
>>> type(b)
<class 'bool'>
b) Lệnh type() — nhận biết kiểu dữ liệu
Dùng type(<biến hoặc giá trị>) để kiểm tra kiểu dữ liệu:
>>> n, x, s = 10, 1.8, "One"
>>> type(n)
<class 'int'> # n là số nguyên
>>> type(x)
<class 'float'> # x là số thực
>>> type(s)
<class 'str'> # s là xâu kí tự
Câu hỏi kiểm tra nhanh (SGK): Xác định kiểu và giá trị của các biểu thức sau:
| Biểu thức | Giá trị | Kiểu dữ liệu | Giải thích |
|---|---|---|---|
"15 + 20 - 7" |
'15 + 20 - 7' |
str (xâu kí tự) |
Nội dung trong dấu nháy → xâu, không tính toán |
32 > 45 |
False |
bool (logic) |
32 không lớn hơn 45 → sai |
13 != 8 + 5 |
False |
bool (logic) |
8 + 5 = 13, mà 13 != 13 là sai |
1 == 2 |
False |
bool (logic) |
1 không bằng 2 → sai |
3. Chuyển đổi kiểu dữ liệu
Python cung cấp ba hàm chuyển đổi kiểu:
a) int() — chuyển sang số nguyên
| Đầu vào | Kết quả | Ghi chú |
|---|---|---|
int(12.6) |
12 |
Số thực → số nguyên (cắt bỏ phần thập phân, không làm tròn) |
int("123") |
123 |
Xâu chứa số nguyên → số nguyên |
int("10.35") |
Lỗi | Xâu chứa số thực → int() không chuyển được |
int("12+45") |
Lỗi | Xâu chứa biểu thức → int() không chuyển được |
b) float() — chuyển sang số thực
| Đầu vào | Kết quả | Ghi chú |
|---|---|---|
float(8) |
8.0 |
Số nguyên → số thực |
float("10.23") |
10.23 |
Xâu chứa số thực → số thực |
float(13+1) |
14.0 |
Biểu thức số (tính 13+1=14 trước) → số thực |
c) str() — chuyển sang xâu kí tự
| Đầu vào | Kết quả | Ghi chú |
|---|---|---|
str(150) |
'150' |
Số nguyên → xâu |
str(12.567) |
'12.567' |
Số thực → xâu |
str(12+34) |
'46' |
Tính biểu thức (12+34=46) trước, rồi chuyển thành xâu |
str(2>3) |
'False' |
Giá trị logic → xâu |
Quy tắc quan trọng:
int()vàfloat()chỉ chuyển đổi được xâu ghi giá trị số trực tiếp (ví dụ"123","10.23"). Nếu xâu chứa biểu thức (ví dụ"12+45") hoặc định dạng số không hợp lệ (ví dụ"10.35"choint(),"123,5.5"chofloat()) thì sẽ báo lỗi.
Câu hỏi kiểm tra nhanh (SGK – bài 1): Mỗi lệnh sau trả lại giá trị nào?
| Lệnh | Kết quả |
|---|---|
a) str(150) |
'150' |
b) int("1110") |
1110 |
c) float("15.0") |
15.0 |
Câu hỏi kiểm tra nhanh (SGK – bài 2): Lệnh nào sau đây sẽ báo lỗi?
- A.
int("12.0")✔️ Báo lỗi — xâu"12.0"chứa dấu chấm thập phân,int()không chuyển đổi được xâu chứa số thực. - B.
float(13+1)— Không lỗi. Python tính13+1 = 14trước, rồifloat(14) = 14.0. - C.
str(17.001)— Không lỗi. Chuyển số thực thành xâu'17.001'.
4. Nhập số nguyên và số thực từ bàn phím
Vì input() luôn trả về xâu kí tự, nên muốn nhập dữ liệu dạng số phải kết hợp với hàm chuyển đổi kiểu:
| Muốn nhập | Cú pháp | Ví dụ |
|---|---|---|
| Số nguyên | <biến> = int(input(<thông báo>)) |
n = int(input("Nhập số: ")) |
| Số thực | <biến> = float(input(<thông báo>)) |
x = float(input("Nhập số: ")) |
| Xâu kí tự | <biến> = input(<thông báo>) |
ten = input("Nhập tên: ") |
Câu hỏi kiểm tra nhanh (SGK): Dùng lệnh x = input("Nhập số x:") để nhập số cho biến x là đúng hay sai?
→ Sai. Vì input() luôn trả về xâu kí tự, nên x sẽ nhận giá trị kiểu xâu (ví dụ '5'), không thể tính toán số học. Muốn nhập số phải viết x = int(input("Nhập số x:")) hoặc x = float(input("Nhập số x:")).
II. Phương pháp giải các dạng bài tập
Dạng 1: Xác định kiểu dữ liệu và giá trị của biểu thức
Phương pháp:
- Nếu biểu thức nằm trong dấu nháy
" "→ kiểu str, giá trị là nội dung nguyên văn. - Nếu biểu thức là phép so sánh (
>,<,>=,<=,==,!=) → kiểu bool, giá trị làTruehoặcFalse. - Nếu biểu thức là phép tính số học → kiểu int hoặc float (phép
/luôn cho float). - Dùng
type()để kiểm tra kiểu nếu không chắc chắn.
Lưu ý phép so sánh:
==là phép kiểm tra bằng (hai dấu bằng),!=là phép kiểm tra khác nhau. Cẩn thận không nhầm=(lệnh gán) với==(so sánh bằng).
Bài tập mẫu: (đã giải ở phần lý thuyết — câu hỏi kiểm tra nhanh SGK về "15 + 20 - 7", 32 > 45, 13 != 8+5, 1 == 2)
Dạng 2: Xác định lệnh chuyển đổi kiểu đúng/sai (báo lỗi hay không)
Phương pháp:
Khi kiểm tra lệnh chuyển đổi kiểu, áp dụng bảng quy tắc sau:
| Hàm | Chấp nhận | Báo lỗi khi |
|---|---|---|
int() |
Số thực (cắt phần thập phân), xâu chứa đúng số nguyên | Xâu chứa số thực ("10.35"), xâu chứa biểu thức ("12+45"), xâu không phải số ("abc") |
float() |
Số nguyên, xâu chứa đúng số (nguyên hoặc thực) | Xâu chứa dấu phẩy ("123,5.5"), xâu chứa biểu thức, xâu không phải số |
str() |
Mọi kiểu dữ liệu (số, logic, xâu…) | Hầu như không bao giờ lỗi |
Mấu chốt:
int()vàfloat()chỉ đọc được xâu ghi giá trị số trực tiếp. Nếu xâu chứa phép tính, dấu phẩy, hoặc định dạng không đúng → lỗiValueError.
Bài tập mẫu (SGK – Luyện tập, bài 1): 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 | Báo lỗi? | Giải thích |
|---|---|---|
a) int("12+45") |
Có lỗi | Xâu "12+45" chứa biểu thức toán học (có dấu +), int() không tính biểu thức trong xâu → ValueError |
b) float(123.56) |
Không lỗi | 123.56 đã là số thực, float(123.56) trả về 123.56 |
c) float("123,5.5") |
Có lỗi | Xâu "123,5.5" chứa dấu phẩy , không phải định dạng số hợp lệ → ValueError |
Dạng 3: Viết chương trình nhập/xuất dữ liệu
Phương pháp:
- Bước 1: Xác định dữ liệu cần nhập: là xâu, số nguyên hay số thực?
- Xâu →
input() - Số nguyên →
int(input()) - Số thực →
float(input())
- Xâu →
- Bước 2: Thực hiện tính toán (nếu có).
- Bước 3: Dùng
print()để xuất kết quả, kết hợp xâu thông báo và biến/biểu thức.
Bài tập mẫu (SGK – Thực hành, nhiệm vụ 2): 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.
Lời giải:
ten = input("Nhập họ tên học sinh: ")
tuoi = int(input("Nhập tuổi: "))
print("Bạn", ten, tuoi, "tuổi")
Giải thích:
- Họ tên là xâu kí tự → dùng
input()trực tiếp. - Tuổi là số nguyên → dùng
int(input())để chuyển đổi. print()in nhiều giá trị cách nhau bằng dấu phẩy → tự động thêm dấu cách giữa các giá trị.
Kết quả khi chạy:
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
Dạng 4: Giải thích tại sao cần dùng int(input()) / float(input())
Phương pháp:
Đây là dạng câu hỏi lý luận, cần trình bày rõ logic 3 bước:
- Lệnh
input()luôn trả về xâu kí tự (str), dù người dùng nhập số. - Xâu kí tự không thể tham gia phép tính số học (ví dụ
"5" + "3"cho"53"chứ không phải8). - Do đó, cần dùng
int()hoặcfloat()để chuyển đổi xâu thành số trước khi tính toán.
Bài tập mẫu (SGK – Luyện tập, bài 2): Vì sao khi nhập một số thực cần viết lệnh float(input())?
Lời giải:
Vì lệnh input() luôn trả về kết quả là xâu kí tự (kiểu str), ngay cả khi người dùng gõ số. Ví dụ nhập 3.14 thì biến nhận giá trị xâu "3.14" chứ không phải số thực 3.14. Muốn sử dụng giá trị này trong các phép tính số học, ta phải dùng float() để chuyển xâu "3.14" thành số thực 3.14. Nếu không chuyển đổi, phép toán trên xâu sẽ cho kết quả sai hoặc gây lỗi.
III. Sơ đồ tư duy
1. Lệnh nhập và xuất dữ liệu
- 1.1.
input(<thông báo>): nhập dữ liệu từ bàn phím, luôn trả về xâu kí tự - 1.2.
print(v1, v2, ..., vn): xuất dữ liệu ra màn hình
2. Kiểu dữ liệu cơ bản
- 2.1.
int— số nguyên - 2.2.
float— số thực - 2.3.
str— xâu kí tự - 2.4.
bool— logic (True/False) - 2.5. Lệnh
type()để kiểm tra kiểu dữ liệu
3. Chuyển đổi kiểu dữ liệu
- 3.1.
int(): chuyển sang số nguyên (cắt phần thập phân, không làm tròn) - 3.2.
float(): chuyển sang số thực - 3.3.
str(): chuyển sang xâu kí tự (chấp nhận mọi kiểu) - 3.4. Giới hạn:
int(),float()không chuyển được xâu chứa biểu thức toán
4. Nhập số từ bàn phím
- 4.1. Nhập số nguyên:
int(input()) - 4.2. Nhập số thực:
float(input()) - 4.3. Nhập xâu kí tự:
input()(không cần chuyển đổi)
IV. Sai lầm thường gặp
| Sai lầm | Đính chính |
|---|---|
Nghĩ rằng input() trả về số nếu người dùng nhập số |
input() luôn trả về xâu kí tự (str), bất kể người dùng gõ gì. Nhập 12 → nhận '12' (xâu), không phải số 12. |
Dùng x = input() rồi tính toán số học trực tiếp với x |
Sai vì x là xâu. Phải viết x = int(input()) hoặc x = float(input()) để chuyển sang số trước khi tính. |
Nghĩ int("10.35") sẽ cho kết quả 10 |
int() không thể chuyển xâu chứa số thực ("10.35") → báo lỗi. Muốn làm vậy phải viết int(float("10.35")) (chuyển sang float trước, rồi int). |
Nghĩ int("12+45") sẽ tính 12+45 = 57 |
int() và float() không tính biểu thức trong xâu. Chỉ chuyển đổi xâu ghi giá trị số trực tiếp. int("12+45") → lỗi. |
Nhầm lẫn = (gán) với == (so sánh bằng) |
x = 5 là lệnh gán (gán giá trị 5 cho x). x == 5 là phép so sánh (kiểm tra x có bằng 5 không, trả về True/False). |
Nghĩ int(12.6) sẽ làm tròn thành 13 |
int() cắt bỏ phần thập phân (không làm tròn): int(12.6) = 12, int(12.9) = 12, int(-3.7) = -3. |
Nhầm lẫn float("123,5") sẽ hoạt động bình thường |
Python dùng dấu chấm . cho phần thập phân (theo chuẩn quốc tế), không dùng dấu phẩy ,. float("123,5") → lỗi. Phải viết float("123.5"). |

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
