
-
Bạn muốn áp dụng Python để giải các bài toán hình học cơ bản nhưng chưa biết xử lý số thập phân?
-
Nắm vững cách sử dụng toán tử
*(nhân),+(cộng) và cách định dạng chuỗi in ra đẹp mắt. -
Code chạy chuẩn xác ngay lần đầu tiên, tránh được lỗi logic “quên đóng ngoặc” kinh điển.
Tóm tắt nội dung
-
Nhắc lại công thức toán học (tránh nhầm lẫn).
-
Tại sao phải dùng
float()thay vìint()? -
Code tính toán cơ bản.
-
Kỹ thuật làm tròn số (Format string) chuyên nghiệp.
Bạn xem thêm:
- Tính tổng hai số nhập từ bàn phím Python
- In ma trận xoắn ốc Python: Giải thuật & Code tối ưu
- Xoay Ma Trận 90 Độ Python: Thuật Toán In-place Tối Ưu
1. Đề bài Tính Diện Tích và Chu Vi Hình Chữ Nhật

Đề bài:
Viết chương trình yêu cầu người dùng nhập vào chiều dài và chiều rộng của một hình chữ nhật. Tính và in ra:
-
Chu vi hình chữ nhật.
-
Diện tích hình chữ nhật.
Input:
-
Chiều dài (số thực dương).
-
Chiều rộng (số thực dương).
Output:
-
Kết quả Chu vi và Diện tích (có thể làm tròn 2 chữ số thập phân).
Ví dụ:
Input:
Dài: 5.5
Rộng: 3
Output:
Chu vi: 17.0
Diện tích: 16.5
2. Phân tích tư duy

Trước khi code, chúng ta cần thống nhất công thức toán học để máy tính hiểu đúng.
Công thức:
Gọi a là chiều dài, b là chiều rộng.
-
Diện tích (Area): S = a x b
-
Chu vi (Perimeter): P = (a + b) x 2
Lưu ý quan trọng về Lập trình:
-
Kiểu dữ liệu: Kích thước hình học thường không tròn trịa (ví dụ 5.5m), nên ta BẮT BUỘC dùng kiểu
float(số thực) thay vìint(số nguyên). -
Thứ tự ưu tiên toán tử: Trong công thức chu vi, nếu bạn viết
a + b * 2, máy tính sẽ nhânb * 2trước rồi mới cộnga(Sai logic). Phải viết là(a + b) * 2.
3. Giải pháp 1:
Đây là cách viết tường minh, nhập dữ liệu, tính toán và in kết quả.
Code Python
# 1. Nhập dữ liệu (Ép kiểu sang float để nhận số thập phân)
dai = float(input("Nhập chiều dài: "))
rong = float(input("Nhập chiều rộng: "))
# 2. Xử lý tính toán
dien_tich = dai * rong
# Lưu ý: Phải có ngoặc (dai + rong)
chu_vi = (dai + rong) * 2
# 3. In kết quả
print("--- Kết quả ---")
print("Chiều dài:", dai)
print("Chiều rộng:", rong)
print("Diện tích:", dien_tich)
print("Chu vi:", chu_vi)
Nhược điểm: Nếu kết quả ra số lẻ dài ngoằng (ví dụ 10.33333333), nhìn sẽ rất xấu.
4. Giải pháp 2:
Trong thực tế, chiều dài/rộng không thể là số âm. Và ta cần in kết quả đẹp mắt (ví dụ 10.50 thay vì 10.5).
Code Python
def main():
try:
# Nhập dữ liệu trên 1 dòng (cách nhau bởi dấu cách) cho nhanh
# Ví dụ nhập: 10.5 5
print("Nhập chiều dài và chiều rộng (cách nhau bởi dấu cách):")
dai, rong = map(float, input().split())
# Kiểm tra điều kiện thực tế (Validation)
if dai <= 0 or rong <= 0:
print("Lỗi: Kích thước phải là số dương!")
return
# Tính toán
dien_tich = dai * rong
chu_vi = (dai + rong) * 2
# In kết quả với f-string format:
# :.2f nghĩa là lấy 2 chữ số phần thập phân
print(f"Diện tích: {dien_tich:.2f}")
print(f"Chu vi: {chu_vi:.2f}")
except ValueError:
print("Lỗi: Vui lòng nhập đúng định dạng số!")
if __name__ == "__main__":
main()
Phân tích điểm hay:
-
map(float, input().split()): Cho phép nhập nhanh5.5 4rồi Enter. -
if dai <= 0: Chặn trường hợp người dùng nhập số âm (Logic hình học). -
:.2f: Giúp kết quả luôn gọn gàng, dễ đọc.
5. Lỗi thường gặp

| Lỗi sai | Biểu hiện | Cách sửa |
| Sai công thức chu vi | Viết a + b * 2 (kết quả sai). |
Phải thêm ngoặc: (a + b) * 2. |
Dùng nhầm int() |
Nhập 5.5 bị báo lỗi ValueError. |
Luôn dùng float() cho các bài toán hình học. |
| Lỗi cách nhập | Nhập 5,5 (dấu phẩy) thay vì 5.5 (dấu chấm). |
Python dùng dấu chấm . cho số thập phân. |
6. FAQ: Câu hỏi thường gặp

1. Tại sao bắt buộc phải dùng float() mà không dùng int() cho chiều dài/rộng?
Trong thực tế, kích thước không phải lúc nào cũng chẵn (ví dụ: đất rộng 4.5m). Nếu dùng int(), khi người dùng nhập 4.5, chương trình sẽ báo lỗi ValueError ngay lập tức. Dùng float() an toàn hơn vì nó chứa được cả số nguyên và số thập phân.
2. Tôi có thể nhập phân số (ví dụ 1/2) trực tiếp vào input() không?
Không. Hàm float() không hiểu ký tự /. Nếu nhập 1/2, chương trình sẽ lỗi.
Giải pháp: Bạn phải tự tính ra số thập phân (0.5) trước khi nhập, hoặc viết thêm code xử lý tách chuỗi để thực hiện phép chia.
3. Làm sao để in kết quả là số nguyên (bỏ đuôi .0) nếu kết quả tròn trịa?
Mặc định float luôn có đuôi .0. Để in đẹp (ví dụ 10 thay vì 10.0), bạn dùng phương pháp:
if dien_tich.is_integer():
print(int(dien_tich))
else:
print(dien_tich)
4. Tại sao kết quả tính toán đôi khi bị lệch (ví dụ 0.1 + 0.2 ra 0.300000004)?
Đây là đặc thù của cách máy tính lưu trữ số thực (Floating Point Arithmetic). Để khắc phục khi hiển thị, hãy luôn dùng f-string :.2f hoặc hàm round() để làm tròn.
5. Làm thế nào để kiểm tra xem hình chữ nhật này có phải là hình vuông không?
Rất đơn giản, bạn thêm một câu lệnh điều kiện if sau khi nhập liệu:
if dai == rong:
print("Đây là hình vuông!")
else:
print("Đây là hình chữ nhật thường.")
6. Sự khác biệt giữa hàm round(x, 2) và định dạng f"{x:.2f}" là gì?
-
round(x, 2)trả về một con số (number) đã được làm tròn. -
f"{x:.2f}"trả về một chuỗi ký tự (string) để in ra màn hình.Nếu bạn cần mang kết quả đi tính toán tiếp, hãy dùng
round. Nếu chỉ cần in đẹp, hãy dùng f-string.
7. Tôi muốn tính thêm đường chéo hình chữ nhật thì dùng công thức nào?
Bạn cần áp dụng định lý Pythagoras: C^2 = A^2 + B^2.
Trong Python:
import math
duong_cheo = math.sqrt(dai**2 + rong**2)
8. Làm sao để xử lý nếu người dùng nhập đơn vị (ví dụ “5m”)?
Hàm float() sẽ lỗi nếu chuỗi chứa chữ cái. Bạn cần xử lý chuỗi (String Manipulation) để loại bỏ chữ “m” trước khi ép kiểu:
raw_input = input("Nhập chiều dài: ") # ví dụ "5m"
so_lieu = float(raw_input.replace("m", "").replace("cm", ""))
9. Nhập dữ liệu bị âm (ví dụ -5) thì chương trình có chạy không?
Về mặt toán học máy tính, chương trình vẫn nhân chia bình thường và ra kết quả âm (Diện tích âm). Tuy nhiên, về logic thực tế thì sai. Vì vậy, bạn bắt buộc phải dùng câu lệnh if dai > 0 and rong > 0 để kiểm tra tính hợp lệ (Validate) dữ liệu đầu vào.
7. Học tiếp gì sau bài này?
Bạn đã làm chủ các phép tính cơ bản. Hãy thử sức với các bài toán hình học phức tạp hơn:
-
Tính cạnh huyền tam giác vuông: Sử dụng định lý Pythagoras (cần
import mathvà dùngmath.sqrt). -
Tính diện tích hình tròn: Làm quen với hằng số
math.pi. -
Kiểm tra tam giác hợp lệ: Sử dụng câu lệnh
ifđể kiểm tra tổng 2 cạnh có lớn hơn cạnh còn lại không.
Các khóa học liên quan:
Một số sản phẩm từ Python:
Một số sách lập trình Python bạn hãy tham khảo