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ả
intvà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)}")