Bài tập Python: Kiểm tra số Âm, Dương hay số 0
Bài tập Python: Kiểm tra số Âm, Dương hay số 0

Trong hành trình học lập trình Python, sau khi làm quen với biến và kiểu dữ liệu, bạn sẽ bước sang một phần cực kỳ quan trọng: Cấu trúc điều kiện.

Bài toán “Nhập số nguyên n, kiểm tra n là số âm, số dương hay số 0” chính là bài tập nhập môn kinh điển giúp bạn hiểu rõ cách máy tính ra quyết định. Bài viết này sẽ hướng dẫn bạn giải quyết triệt để bài toán này, đồng thời học cách xử lý lỗi chuyên nghiệp.

Bạn hãy tham khảo các khóa học

1. Phân tích thuật toán

Máy tính hoạt động dựa trên logic đúng/sai. Để xác định tính chất của số nguyên $n$, chúng ta cần so sánh nó với mốc số 0.

Thuật toán chuẩn sẽ đi qua 3 bước kiểm tra sàng lọc:

  1. Bước 1: Kiểm tra Nếu n > 0. Kết luận là Số Dương.

  2. Bước 2: Nếu sai, kiểm tra tiếp Nếu n < 0. Kết luận là Số Âm.

  3. Bước 3: Nếu cả 2 bước trên đều không thỏa mãn => Chắc chắn là Số 0.

2. Code Python mẫu 

Dưới đây là 2 cách giải: Cách cơ bản để hiểu logic và Cách nâng cao để áp dụng thực tế.

Bài tập Python: Kiểm tra số Âm, Dương hay số 0
Bài tập Python: Kiểm tra số Âm, Dương hay số 0

Cách 1: Sử dụng If – Elif – Else (Cơ bản)

Đây là cấu trúc rẽ nhánh tường minh, dễ hiểu nhất cho người mới bắt đầu.

# Yêu cầu người dùng nhập số
# Lưu ý: Hàm input() trả về chuỗi, cần dùng int() để ép kiểu sang số nguyên
n = int(input("Nhập vào số nguyên n: "))

if n > 0:
    print(f"{n} là số nguyên DƯƠNG.")
elif n < 0:
    print(f"{n} là số nguyên ÂM.")
else:
    # Trường hợp còn lại (không lớn hơn 0, cũng không nhỏ hơn 0)
    print("Đây là số 0.")

Cách 2: Code tối ưu với xử lý lỗi (Khuyên dùng)

Bài tập Python Kiểm tra số Âm Dương hay số 0 1
Bài tập Python Kiểm tra số Âm Dương hay số 0 1

Vấn đề lớn nhất của người mới học là chương trình bị lỗi (Crash) ngay lập tức nếu người dùng lỡ tay nhập chữ cái (ví dụ: ‘abc’) thay vì con số. Để khắc phục, chúng ta sử dụng khối lệnh try...except.

print("--- CHƯƠNG TRÌNH KIỂM TRA SỐ NGUYÊN ---")
try:
    # 1. Cố gắng nhận dữ liệu và ép kiểu
    user_input = input("Vui lòng nhập một số nguyên: ")
    n = int(user_input)
    # 2. Xử lý logic kiểm tra
    if n > 0:
        print(f"Kết quả: {n} là số DƯƠNG.")
    elif n < 0:
        print(f"Kết quả: {n} là số ÂM.")
    else:
        print("Kết quả: Đây chính là số 0.")
except ValueError:
    # 3. Thông báo lỗi thân thiện thay vì để chương trình bị dừng đột ngột
    print("Lỗi: Bạn nhập không phải là số nguyên. Vui lòng chạy lại và nhập đúng số!")

3. Các lỗi thường gặp khi mới học Python

Khi chấm bài cho các bạn mới học (Newbie), đây là 3 lỗi sai phổ biến nhất mà bạn cần tránh:

  1. Quên thụt đầu dòng (Indentation): Python không dùng dấu ngoặc nhọn {}. Bạn bắt buộc phải thụt đầu dòng (thường là 1 phím Tab) cho các dòng lệnh bên trong if.

  2. Nhầm lẫn số 0: Nhiều bạn chỉ kiểm tra if n > 0 rồi else cho trường hợp âm. Điều này sai toán học vì số 0 không phải là số âm.

  3. Quên ép kiểu dữ liệu: Hàm input() luôn trả về văn bản. Nếu không dùng int(), phép so sánh toán học sẽ gây lỗi.

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 nhất của học viên khi giải bài tập này:

1. Làm sao để kiểm tra cả số thập phân (số thực)?

Trong code mẫu, chúng ta dùng hàm int() nên chỉ nhận số nguyên. Nếu bạn muốn kiểm tra số thực (ví dụ: -3.5 hoặc 4.2), hãy thay hàm int() bằng hàm float().

2. Tôi có thể viết code này ngắn gọn trên 1 dòng được không?

Được. Python hỗ trợ toán tử ba ngôi (Ternary Operator). Bạn có thể viết:

ket_qua = “Dương” if n > 0 else (“Âm” if n < 0 else “Số 0”). Tuy nhiên, cách này không khuyến khích cho người mới vì khó đọc hiểu.

3. Tại sao tôi nhập đúng số nhưng chương trình vẫn báo lỗi IndentationError?

Đây là lỗi thụt đầu dòng. Hãy kiểm tra xem các dòng lệnh trong khối if/else có thẳng hàng nhau không. Bạn không được trộn lẫn giữa phím Tab và phím Space (dấu cách).

4. Số 0 là âm hay dương?

Theo quy ước toán học và lập trình chuẩn quốc tế, số 0 là số trung tính, không mang dấu dương (+) cũng không mang dấu âm (-). Do đó cần một trường hợp else riêng biệt cho nó.

5. Sự khác nhau giữa lệnh if và elif là gì?

If luôn được máy tính kiểm tra đầu tiên. Elif (Else if) chỉ được kiểm tra khi điều kiện If phía trước nó bị Sai. Sử dụng Elif giúp chương trình chạy nhanh hơn vì loại bỏ các bước kiểm tra thừa thãi.

6. Làm thế nào để kiểm tra thêm số chẵn lẻ trong cùng bài này?

Bạn có thể lồng ghép logic. Sau khi kiểm tra dương/âm, bạn dùng toán tử % (chia lấy dư). Nếu n % 2 == 0 thì là số chẵn, ngược lại là số lẻ.


Tổng kết:

Qua bài tập này, bạn đã nắm vững được cách sử dụng cấu trúc rẽ nhánh If-Elif-Else và cách xử lý ngoại lệ trong Python. Đây là nền tảng vững chắc để bạn tiếp tục với các bài toán phức tạp hơn. Chúc các bạn học tốt!

Bạn xem Bài tập Python 2: Kiểm tra số Chẵn hay Lẻ

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *