Mục tiêu bài học
- Về kiến thức:
- Biết và thực hiện được các lệnh vào, ra dữ liệu cơ bản trong Python.
- Nắm được cách chuyển đổi qua lại giữa các kiểu dữ liệu đơn giản như số nguyên, số thực và xâu ký tự.
- Về kỹ năng:
- Thực hành thành thạo việc nhập dữ liệu từ bàn phím.
- Thực hiện các phép biến đổi kiểu dữ liệu một cách chính xác.
- Về phẩm chất:
- Rèn luyện tính cẩn thận, trách nhiệm khi làm việc.
- Xây dựng tinh thần chăm chỉ, chuyên cần để hoàn thành các nhiệm vụ học tập.
Hoạt động khởi động
Để tương tác với người dùng, chương trình cần có lệnh để nhập dữ liệu và lệnh để xuất thông tin. Ở các bài trước, chúng ta đã làm quen với lệnh print()
để đưa dữ liệu ra màn hình. Trong bài này, chúng ta sẽ tìm hiểu về lệnh input()
để nhận dữ liệu từ người dùng.

Quan sát hình ảnh trên, 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ệnh input() dùng để nhận dữ liệu do người dùng nhập vào từ bàn phím. Dữ liệu nhập vào sẽ được chương trình đọc và lưu vào một biến để xử lý sau này.
+ Cú pháp có thể là tên_biến = input("Dòng thông báo cho người dùng")
.
1. Các lệnh vào ra đơn giản
Trong Python, hai lệnh vào-ra cơ bản và phổ biến nhất là input() và print().
- Lệnh
input()
: Dùng để nhập dữ liệu từ thiết bị vào chuẩn (thường là bàn phím). - Lệnh
print()
: Dùng để xuất dữ liệu ra thiết bị ra chuẩn (thường là màn hình).
Cú pháp của lệnh input():<biến> = input(<Dòng thông báo>)
Lưu ý quan trọng: Mọi dữ liệu được nhập từ lệnh input()
đều được coi là một xâu kí tự (string), kể cả khi bạn nhập vào một con số.
Lệnh input() cho phép nhập dữ liệu từ đâu? Giá trị được nhập sẽ là số hay xâu?
+ Lệnh input()
cho phép nhập dữ liệu từ bàn phím. Giá trị trả về của lệnh này luôn luôn là một xâu kí tự.
Ví dụ:
# Nhập họ tên (xâu)
name = input("Nhập họ tên của bạn: ")
print("Xin chào", name)
# Nhập tuổi (vẫn là xâu)
age_str = input("Bạn bao nhiêu tuổi: ")
print("Tuổi của bạn là:", age_str)
2. Chuyển đổi kiểu dữ liệu cơ bản của Python
Nhận biết kiểu dữ liệu
Python có các kiểu dữ liệu cơ bản sau:
Kiểu dữ liệu | Tên kiểu | Ví dụ | Mô tả |
int | Số nguyên | 10 , -5 , 100 | Lưu trữ các giá trị số nguyên (không có phần thập phân). |
float | Số thực | 3.14 , -2.5 , 0.0 | Lưu trữ các giá trị số có phần thập phân. |
str | Xâu ký tự (chuỗi) | "Hello" , '123' | Lưu trữ các chuỗi ký tự trong dấu nháy đơn hoặc đôi. |
bool | Logic (Boolean) | True , False | Lưu trữ giá trị đúng (True ) hoặc sai (False ). |
Kiểm tra kiểu dữ liệu của biến
Trong Python, có cách nào để nhận biết được kiểu dữ liệu của một biến không?
Có, ta có thể dùng lệnh type()
để nhận biết kiểu dữ liệu của một biến. Ví dụ, type(ten_bien)
sẽ trả về kiểu dữ liệu của biến đó.
Vì input()
luôn trả về xâu, chúng ta cần chuyển đổi kiểu dữ liệu nếu muốn thực hiện các phép toán số học. Python cung cấp các hàm trùng tên với kiểu dữ liệu để thực hiện việc này: int()
, float()
, str()
.
int(x)
: Chuyển x thành số nguyên. x có thể là số thực hoặc xâu chứa số nguyên.float(x)
: Chuyển x thành số thực. x có thể là số nguyên hoặc xâu chứa số (nguyên hoặc thực).str(x)
: Chuyển x thành xâu kí tự.
Giả sử có biến s với giá trị là xâu "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ì?
Để chuyển xâu “123” thành số nguyên 123, ta sử dụng hàm int(). Cú pháp thực hiện là: s = int(s).
Nhập dữ liệu kiểu số
Để nhập một số nguyên hoặc số thực từ bàn phím, chúng ta phải kết hợp lệnh input() với hàm chuyển đổi tương ứng.
Dữ liệu nhập từ bàn phím bằng lệnh input()
luôn là xâu kí tự. Vậy 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?
input()
luôn là xâu kí tự. Vậy 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?Chúng ta cần lồng lệnh input() bên trong hàm chuyển đổi kiểu dữ liệu:
+ Để nhập số nguyên: bien_so_nguyen = int(input("Thông báo"))
+ Để nhập số thực: bien_so_thuc = float(input("Thông báo"))
Câu hỏi củng cố
’Xác
a) Biểu thức này là một xâu ký tự. Kiểu dữ liệu là str, giá trị là "15 + 20 – 7"
.
b) Đây là một phép so sánh. 32 > 45 là sai. Kiểu dữ liệu là bool, giá trị là False
.
c) Đây là một phép so sánh. 8 + 5 bằng 13. 13 != 13 là sai. Kiểu dữ liệu là bool, giá trị là False
.
d) Đây là một phép so sánh. 1 == 2 là sai. Kiểu dữ liệu là bool, giá trị là False
.
Mỗi lệnh sau sẽ trả lại giá trị nào?
a) str(150)
b) int("1110")
c) float("15.0")
a) str(150)
: Chuyển số 150 thành xâu, kết quả là “150”.
b) int("1110")
: Chuyển xâu “1110” thành số nguyên, kết quả là 1110.
c) float("15.0")
: Chuyển xâu “15.0” thành số thực, kết quả là 15.0.
Luyện tập
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")
int("12+45")
float(123.56)
float("123,5.5")
Các lệnh sẽ báo lỗi là a và c.
a) int("12+45")
: Lỗi. Hàm int() không thể chuyển đổi một xâu chứa biểu thức toán học.
b) float(123.56)
: Lệnh này hợp lệ, kết quả là số thực 123.56.
c) float("123,5.5")
: Lỗi. Hàm float() sử dụng dấu chấm . làm dấu ngăn cách phần thập phân, không phải dấu phẩy ,.
Vì sao khi nhập một số thực cần viết lệnh float(input())
?
float(input())
?+ Vì lệnh input() luôn trả về dữ liệu dưới dạng xâu kí tự. Nếu người dùng nhập vào “9.5”, chương trình sẽ nhận được xâu “9.5” chứ không phải số thực 9.5.
+ Do đó, cần dùng hàm float()
để chuyển đổi xâu kí tự đó thành số thực để có thể thực hiện các phép tính toán.
Vận dụng
1. Viết chương trình nhập giá trị ss là tổng 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
# Yêu cầu người dùng nhập tổng số giây
ss = int(input("Nhập tổng số giây: "))
# Lưu lại giá trị ban đầu để in ra
tong_giay_ban_dau = ss
# Tính toán
# 1 ngày = 86400 giây
ngay = ss // 86400
s_con_lai = ss % 86400
# 1 giờ = 3600 giây
gio = s_con_lai // 3600
s_con_lai = s_con_lai % 3600
# 1 phút = 60 giây
phut = s_con_lai // 60
giay = s_con_lai % 60
# In kết quả ra màn hình
print(tong_giay_ban_dau, "giây =", ngay, "ngày", gio, "giờ", phut, "phút", giay, "giây")
Ví dụ kết quả:
Nếu người dùng nhập 684500, chương trình sẽ in ra:684500 giây = 7 ngày 22 giờ 8 phút 20 giây
2. 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 (biết rằng a, b, c thỏa mãn bất đẳng thức tam giác). Gợi ý: Dùng công thức Heron để tính diện tích.
– Theo công thức Heron, diện tích S của một tam giác có các cạnh a, b, c được tính bằng:S = √([p(p-a)(p-b)(p-c)])
Trong đó p là nửa chu vi: p = (a + b + c) / 2
.
– Đây là chương trình Python tương ứng:
# Nhập độ dài 3 cạnh từ bàn phím
a = float(input("Nhập độ dài cạnh a: "))
b = float(input("Nhập độ dài cạnh b: "))
c = float(input("Nhập độ dài cạnh c: "))
# Tính chu vi
chu_vi = a + b + c
# Tính nửa chu vi (p)
p = chu_vi / 2
# Tính diện tích theo công thức Heron
# Lưu ý: **0.5 tương đương với căn bậc hai (mũ 1/2)
dien_tich = (p * (p - a) * (p - b) * (p - c)) ** 0.5
# In kết quả
print("Chu vi của tam giác là:", chu_vi)
print("Diện tích của tam giác là:", dien_tich)