Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python - Kiểm tra số dương, âm hoặc 0

Khi cần kiểm tra một số là dương, âm hay bằng 0, dùng cấu trúc if-elif-else cơ bản.

Ví dụ cơ bản

def check_number(num):
    """Kiểm tra số dương, âm hay 0."""
    if num > 0:
        return "Số dương"
    elif num < 0:
        return "Số âm"
    else:
        return "Số 0"

# Test
test_numbers = [58, -10, 0, 3.14, -2.5, 0.0]

for n in test_numbers:
    print(f"{n:>5} -> {check_number(n)}")

Kết quả

   58 -> Số dương
  -10 -> Số âm
    0 -> Số 0
 3.14 -> Số dương
 -2.5 -> Số âm
  0.0 -> Số 0

Giải thích

  • if num > 0: số dương (lớn hơn 0).
  • elif num < 0: số âm (nhỏ hơn 0).
  • else: trường hợp còn lại là 0.
  • Hoạt động với cả int và float.

Cách viết gọn (ternary expression)

def check_number_short(num):
    return "Số dương" if num > 0 else ("Số âm" if num < 0 else "Số 0")

# Hoặc dùng dictionary mapping (cho giá trị rời rạc)
# Không áp dụng tốt cho số thực liên tục

Xử lý input từ người dùng

def main():
    while True:
        try:
            user_input = input("Nhập một số (Enter để thoát): ").strip()
            if not user_input:
                break
            
            num = float(user_input)
            result = check_number(num)
            print(f"Kết quả: {result}\n")
            
        except ValueError:
            print("Lỗi: Vui lòng nhập số hợp lệ!")
        except KeyboardInterrupt:
            print("\nTạm biệt!")
            break

if __name__ == "__main__":
    main()

Kiểm tra dấu hiệu (sign) với math.copysign

import math

def sign_info(num):
    """Trả về thông tin dấu hiệu chi tiết."""
    if num == 0:
        return "Zero (unsigned)"
    sign = math.copysign(1, num)
    return f"{'Positive' if sign > 0 else 'Negative'} (sign={int(sign)})"

for n in [5, -3, 0, 0.0, -0.0, float('inf'), float('-inf')]:
    print(f"{str(n):>8} -> {sign_info(n)}")

Kiểm tra số nguyên dương/âm (chỉ int)

def check_integer(num):
    """Chỉ chấp nhận số nguyên."""
    if not isinstance(num, int):
        return "Không phải số nguyên"
    if num > 0:
        return "Nguyên dương"
    elif num < 0:
        return "Nguyên âm"
    return "Không"

print(check_integer(5))    # Nguyên dương
print(check_integer(-3))   # Nguyên âm
print(check_integer(0))    # Không
print(check_integer(3.14)) # Không phải số nguyên

Ứng dụng: Phân loại danh sách số

numbers = [10, -5, 0, 3, -1, 0, 7, -2]

positive = [n for n in numbers if n > 0]
negative = [n for n in numbers if n < 0]
zeros = [n for n in numbers if n == 0]

print(f"Dương: {positive}")
print(f"Âm:    {negative}")
print(f"Không: {zeros}")

# Thống kê
print(f"\nTổng: {len(numbers)}, Dương: {len(positive)}, Âm: {len(negative)}, 0: {len(zeros)}")