
Ngược lại với bài toán tìm số lớn nhất (Max), bài toán “Nhập 2 số a, b và tìm số nhỏ hơn” (Min) cũng là một kỹ năng cơ bản không thể thiếu. Việc xác định giá trị nhỏ nhất thường được dùng để tìm biên dưới, tính khoảng cách ngắn nhất hoặc lọc dữ liệu.
Bài viết này sẽ hướng dẫn bạn giải quyết bài toán này từ cách tư duy logic thủ công đến cách sử dụng công cụ mạnh mẽ có sẵn của Python.
Bạn hãy tham khảo các khóa học
- Làm chủ Python trong 4 tuần
- Đầu tư Chứng Khoán theo phương pháp CANSLIM
- Thành thạo xử lý dữ liệu với Python
1. Phân tích thuật toán
Chúng ta có 2 biến đầu vào là a và b. Mục tiêu là in ra màn hình giá trị nào nhỏ hơn.
Logic so sánh:
-
Trường hợp 1: Nếu a < b => Số nhỏ hơn là a.
-
Trường hợp 2: Nếu b < a => Số nhỏ hơn là b.
-
Trường hợp 3: Nếu a == b => Hai số bằng nhau (Giá trị nhỏ nhất chính là giá trị của chúng).
2. Code Python mẫu
Dưới đây là 3 cách giải phổ biến mà mọi lập trình viên Python cần biết.
Cách 1: Sử dụng If-Else (Cách truyền thống)
Cách này giúp bạn hiểu rõ bản chất của việc so sánh và luồng đi của dữ liệu.
# 1. Nhập vào 2 số a và b
# Sử dụng int() để ép kiểu số nguyên
a = int(input("Nhập số a: "))
b = int(input("Nhập số b: "))
# 2. So sánh và in kết quả
if a < b:
print(f"Số nhỏ hơn là: {a}")
elif b < a:
print(f"Số nhỏ hơn là: {b}")
else:
print(f"Hai số bằng nhau (Giá trị: {a})")
Cách 2: Sử dụng hàm min() (Cách tối ưu)

Python cung cấp sẵn hàm min() (đối lập với hàm max()) để tìm giá trị nhỏ nhất cực kỳ nhanh chóng.
# Nhập dữ liệu
a = int(input("Nhập số a: "))
b = int(input("Nhập số b: "))
# Tìm số nhỏ nhất chỉ với 1 dòng lệnh
ket_qua = min(a, b)
print(f"Số nhỏ nhất là: {ket_qua}")
Cách 3: Code xử lý lỗi nhập liệu (Khuyên dùng)
Trong thực tế, người dùng có thể nhập nhầm chữ cái. Hãy dùng khối try...except để chương trình chạy mượt mà hơn.
print("--- TÌM SỐ NHỎ NHẤT (MIN) ---")
try:
# Nhập liệu an toàn trên 1 dòng
print("Nhập 2 số a và b (cách nhau bởi dấu cách):")
# Ví dụ nhập: 5 10
a, b = map(int, input().split())
if a < b:
print(f"Kết quả: {a} là số nhỏ hơn.")
else:
# Bao gồm cả trường hợp b < a và b == a
print(f"Kết quả: {b} là số nhỏ hơn (hoặc bằng).")
except ValueError:
print("Lỗi: Vui lòng nhập đúng định dạng số nguyên!")
3. Các lỗi thường gặp khi tìm Min
-
Nhầm lẫn dấu so sánh:
-
Tìm Min phải dùng dấu bé hơn (
<). Rất nhiều bạn copy code bài Max qua mà quên sửa dấu thành (>), dẫn đến kết quả sai.
-
-
So sánh sai kiểu dữ liệu:
-
Nếu không ép kiểu sang số (
inthoặcfloat), Python sẽ so sánh chuỗi. -
Ví dụ:
"100" < "2"trả vềTrue(Vì ký tự ‘1’ nhỏ hơn ‘2’). Đây là lỗi logic rất nguy hiểm.
-
4. Câu hỏi thường gặp (FAQ)
Dưới đây là tổng hợp các thắc mắc phổ biến về bài toán tìm Min:
1. Hàm min() có hoạt động với số âm không?
Có. Logic so sánh trong toán học vẫn đúng với số âm. Ví dụ: min(-5, -10) sẽ trả về -10 (vì -10 nhỏ hơn -5).
2. Làm sao để so sánh số thập phân (số thực)?
Bạn chỉ cần thay hàm int() bằng hàm float(). Ví dụ min(3.5, 3.1) sẽ trả về 3.1.
3. Tôi có thể tìm số nhỏ nhất trong 3 hoặc 4 số không?
Được. Hàm min() chấp nhận nhiều tham số. Ví dụ: min(a, b, c, d) sẽ trả về số nhỏ nhất trong danh sách đó mà không cần viết nhiều lệnh if.
4. Nếu hai số bằng nhau thì hàm min() trả về gì?
Nó sẽ trả về giá trị của số đó. Ví dụ min(5, 5) sẽ trả về 5.
5. Có cách nào viết code ngắn gọn trên 1 dòng không?
Có. Bạn có thể dùng toán tử ba ngôi: print(a if a < b else b).
6. Tại sao tôi nhập đúng số nhưng máy báo lỗi ValueError?
Có thể bạn đang dùng lệnh input().split() nhưng lại nhập các số cách nhau bằng dấu phẩy thay vì dấu cách. Hoặc bạn đã vô tình nhập một ký tự lạ.
Tổng kết:
Bài toán tìm số nhỏ nhất (min) và số lớn nhất (max) là cặp bài trùng kinh điển trong lập trình. Nắm vững 2 bài này giúp bạn dễ dàng tiếp cận các thuật toán sắp xếp (Sorting) sau này.