Skip to content

Even/Odd Number Operations

Zero-dependency Python snippets for checking even and odd numbers using the standard library.

11 snippets available in this sub-category.


Simple

Check if number is even

math even modulo parity numbers

Check if number is even

def is_even(number):
    """Check if number is even."""
    return number % 2 == 0


# Basic even checks
print(is_even(2))  # True
print(is_even(3))  # False
print(is_even(0))  # True
print(is_even(-4))  # True
print(is_even(-5))  # False

Notes

  • Uses modulo operator
  • Works with positive and negative numbers
  • Zero is considered even
  • Simple and efficient

Check if number is odd

math odd modulo parity numbers

Check if number is odd

def is_odd(number):
    """Check if number is odd."""
    return number % 2 == 1


# Basic odd checks
print(is_odd(1))  # True
print(is_odd(2))  # False
print(is_odd(0))  # False
print(is_odd(-3))  # True
print(is_odd(-4))  # False

Notes

  • Uses modulo operator
  • Works with positive and negative numbers
  • Zero is not odd
  • Complementary to even check

Get number parity

math parity even odd modulo numbers

Get number parity (0 for even, 1 for odd)

def get_parity(number):
    """Get number parity (0 for even, 1 for odd)."""
    return number % 2


def get_parity_string(number):
    """Get number parity as string."""
    return "even" if number % 2 == 0 else "odd"


# Examples
print(get_parity(4))  # 0 (even)
print(get_parity(7))  # 1 (odd)
print(get_parity_string(4))  # "even"
print(get_parity_string(7))  # "odd"

Notes

  • Returns 0 or 1
  • String representation available
  • Useful for indexing
  • Binary classification

Complex

Check even/odd with bitwise operations

math even odd bitwise performance numbers

Check if number is even/odd using bitwise operations

def is_even_bitwise(number):
    """Check if number is even using bitwise AND."""
    return (number & 1) == 0


def is_odd_bitwise(number):
    """Check if number is odd using bitwise AND."""
    return (number & 1) == 1


# Examples
print(is_even_bitwise(6))  # True
print(is_even_bitwise(7))  # False
print(is_odd_bitwise(6))  # False
print(is_odd_bitwise(7))  # True

Notes

  • Uses bitwise AND operator
  • Faster than modulo for integers
  • Only works with integers
  • Performance optimization

Check even/odd for floating point

math even odd float validation numbers

Check if float number is even/odd (whole number and even/odd)

def is_even_float(number):
    """Check if float number is even (whole number and even)."""
    if not isinstance(number, (int, float)):
        return False

    # Check if it's a whole number
    if number != int(number):
        return False

    return int(number) % 2 == 0


def is_odd_float(number):
    """Check if float number is odd (whole number and odd)."""
    if not isinstance(number, (int, float)):
        return False

    # Check if it's a whole number
    if number != int(number):
        return False

    return int(number) % 2 == 1


# Examples
print(is_even_float(4.0))  # True
print(is_even_float(4.5))  # False (not whole)
print(is_even_float(3.0))  # False (odd)
print(is_odd_float(3.0))  # True
print(is_odd_float(3.5))  # False (not whole)

Notes

  • Handles floating point numbers
  • Checks for whole numbers
  • Type validation
  • Extended functionality

Check even/odd with tolerance

math even odd tolerance floating-point numbers

Check if number is even/odd with tolerance for floating point errors

def is_even_tolerance(number, tolerance=1e-10):
    """Check if number is even with tolerance for floating point errors."""
    if not isinstance(number, (int, float)):
        return False

    # Round to nearest integer if very close
    rounded = round(number)
    if abs(number - rounded) <= tolerance:
        number = rounded

    # Check if it's a whole number
    if abs(number - int(number)) > tolerance:
        return False

    return int(number) % 2 == 0


def is_odd_tolerance(number, tolerance=1e-10):
    """Check if number is odd with tolerance for floating point errors."""
    if not isinstance(number, (int, float)):
        return False

    # Round to nearest integer if very close
    rounded = round(number)
    if abs(number - rounded) <= tolerance:
        number = rounded

    # Check if it's a whole number
    if abs(number - int(number)) > tolerance:
        return False

    return int(number) % 2 == 1


# Examples
print(is_even_tolerance(4.0000000001))  # True (within tolerance)
print(is_even_tolerance(4.1))  # False (not whole)
print(is_odd_tolerance(3.9999999999))  # True (within tolerance)

Notes

  • Handles floating point precision
  • Configurable tolerance
  • Robust to rounding errors
  • Scientific applications

Check even/odd for sequences

math even odd sequence filter partition numbers

Count, filter, and partition even/odd numbers in sequences

def is_even(number):
    """Check if number is even."""
    return number % 2 == 0

def is_odd(number):
    """Check if number is odd."""
    return number % 2 == 1


def count_even_odd(numbers):
    """Count even and odd numbers in sequence."""
    even_count = sum(1 for n in numbers if is_even(n))
    odd_count = len(numbers) - even_count
    return even_count, odd_count


def filter_even_odd(numbers, keep_even=True):
    """Filter sequence to keep even or odd numbers."""
    if keep_even:
        return [n for n in numbers if is_even(n)]
    else:
        return [n for n in numbers if is_odd(n)]


def partition_even_odd(numbers):
    """Partition sequence into even and odd numbers."""
    even = []
    odd = []
    for n in numbers:
        if is_even(n):
            even.append(n)
        else:
            odd.append(n)
    return even, odd


# Examples
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_count, odd_count = count_even_odd(numbers)
print(f"Even: {even_count}, Odd: {odd_count}")  # Even: 5, Odd: 5

even_numbers = filter_even_odd(numbers, keep_even=True)
odd_numbers = filter_even_odd(numbers, keep_even=False)
print(f"Even: {even_numbers}")  # Even: [2, 4, 6, 8, 10]
print(f"Odd: {odd_numbers}")  # Odd: [1, 3, 5, 7, 9]

even, odd = partition_even_odd(numbers)
print(f"Even: {even}, Odd: {odd}")

Notes

  • Sequence operations
  • Counting and filtering
  • Partitioning data
  • Data analysis

Edge Cases

Handle edge cases in even/odd checks

math even odd error-handling edge-case validation numbers

Robust even/odd checks with edge case handling

import math


def robust_is_even(number):
    """Robust even check with edge case handling."""
    if not isinstance(number, (int, float)):
        raise TypeError("Number must be numeric")

    if math.isnan(number):
        return False

    if math.isinf(number):
        return False

    # Handle floating point numbers
    if isinstance(number, float):
        if number != int(number):
            return False
        number = int(number)

    return number % 2 == 0


def robust_is_odd(number):
    """Robust odd check with edge case handling."""
    if not isinstance(number, (int, float)):
        raise TypeError("Number must be numeric")

    if math.isnan(number):
        return False

    if math.isinf(number):
        return False

    # Handle floating point numbers
    if isinstance(number, float):
        if number != int(number):
            return False
        number = int(number)

    return number % 2 == 1


# Test edge cases
try:
    print(robust_is_even(float("nan")))  # False
    print(robust_is_even(float("inf")))  # False
    print(robust_is_even(4.0))  # True
    print(robust_is_even(4.5))  # False
except TypeError as e:
    print(f"Error: {e}")

Notes

  • Input validation
  • NaN and infinity handling
  • Type checking
  • Error messages

Performance comparison

math even odd performance benchmarking optimization numbers

Benchmark different even/odd checking methods

import time


def is_even(number):
    """Check if number is even."""
    return number % 2 == 0


def benchmark_even_odd():
    """Benchmark different even/odd checking methods."""
    numbers = list(range(-10000, 10000))

    # Method 1: Modulo operator
    start = time.time()
    _ = [n % 2 == 0 for n in numbers]
    time1 = time.time() - start

    # Method 2: Bitwise AND
    start = time.time()
    _ = [(n & 1) == 0 for n in numbers]
    time2 = time.time() - start

    # Method 3: Function call
    start = time.time()
    _ = [is_even(n) for n in numbers]
    time3 = time.time() - start

    print(f"Modulo: {time1:.6f}s")
    print(f"Bitwise: {time2:.6f}s")
    print(f"Function: {time3:.6f}s")
    print(f"Bitwise speedup: {time1 / time2:.2f}x")


# benchmark_even_odd()

Notes

  • Performance comparison
  • Modulo vs bitwise
  • Function call overhead
  • Optimization insights

Practical Examples

Alternating pattern generation

math even odd pattern generation sequence numbers

Generate alternating even/odd patterns

def is_even(number):
    """Check if number is even."""
    return number % 2 == 0


def is_odd(number):
    """Check if number is odd."""
    return number % 2 == 1


def generate_alternating_pattern(length, start_even=True):
    """Generate alternating even/odd pattern."""
    pattern = []
    current = 0 if start_even else 1

    for _ in range(length):
        pattern.append(current)
        current = 2 if current == 1 else 1  # Alternate between 1 and 2

    return pattern


def generate_even_odd_sequence(start, end):
    """Generate sequence with even and odd numbers separated."""
    even = [n for n in range(start, end + 1) if is_even(n)]
    odd = [n for n in range(start, end + 1) if is_odd(n)]
    return even, odd


# Examples
pattern = generate_alternating_pattern(10, start_even=True)
print(f"Pattern: {pattern}")  # Pattern: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]

even, odd = generate_even_odd_sequence(1, 10)
print(f"Even: {even}")  # Even: [2, 4, 6, 8, 10]
print(f"Odd: {odd}")  # Odd: [1, 3, 5, 7, 9]

Notes

  • Pattern generation
  • Sequence separation
  • Alternating sequences
  • Data organization

Mathematical operations

math even odd sum product average statistics numbers

Calculate mathematical operations on even/odd numbers separately

def is_even(number):
    """Check if number is even."""
    return number % 2 == 0


def is_odd(number):
    """Check if number is odd."""
    return number % 2 == 1


def sum_even_odd(numbers):
    """Calculate sum of even and odd numbers separately."""
    even_sum = sum(n for n in numbers if is_even(n))
    odd_sum = sum(n for n in numbers if is_odd(n))
    return even_sum, odd_sum


def product_even_odd(numbers):
    """Calculate product of even and odd numbers separately."""
    even_product = 1
    odd_product = 1

    for n in numbers:
        if is_even(n):
            even_product *= n
        else:
            odd_product *= n

    return even_product, odd_product


def average_even_odd(numbers):
    """Calculate average of even and odd numbers separately."""
    even_numbers = [n for n in numbers if is_even(n)]
    odd_numbers = [n for n in numbers if is_odd(n)]

    even_avg = sum(even_numbers) / len(even_numbers) if even_numbers else 0
    odd_avg = sum(odd_numbers) / len(odd_numbers) if odd_numbers else 0

    return even_avg, odd_avg


# Examples
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_sum, odd_sum = sum_even_odd(numbers)
print(f"Even sum: {even_sum}, Odd sum: {odd_sum}")  # Even sum: 30, Odd sum: 25

even_avg, odd_avg = average_even_odd(numbers)
print(f"Even average: {even_avg}, Odd average: {odd_avg}")  # Even average: 6.0, Odd average: 5.0

Notes

  • Separate calculations
  • Statistical analysis
  • Data aggregation
  • Mathematical operations

🔗 Cross-References

🏷️ Tags

math, even, odd, parity, modulo, bitwise, performance, edge-case, best-practices

📝 Notes

  • Even/Odd Functions Provide Number Classification
  • Bitwise Operations Offer Performance Benefits
  • Edge Case Handling Ensures Robustness
  • Real-World Applications in Data Analysis and Patterns