#3060·Python

Add support for negative numbers in sum_of_digits function

Author: LucasCivCreated Nov 28, 2025Updated Jul 17, 2026

Current Behavior The sum_of_digits() function currently only works with non-negative integers. When a negative number is passed, it enters an infinite loop or produces incorrect results.

python:

Current implementation fails with negative numbers

sum_of_digits(-123) # Does not work correctly

✅ Expected Behavior The function should handle negative numbers by computing the sum of digits using the absolute value.

python sum_of_digits(-123) # Should return 6 (1 + 2 + 3) sum_of_digits(-456) # Should return 15 (4 + 5 + 6)

Proposed Solution Add abs() to handle negative numbers in the sum_of_digits function:

def sum_of_digits(n: int) -> int: """ Compute the sum of the digits of an integer.

Args:
    n: An integer (negative values are converted to absolute).

Returns:
    Sum of digits of the absolute value of the number.

Examples:
    >>> sum_of_digits(123)
    6
    >>> sum_of_digits(-789)
    24
"""
n = abs(n)  # Handle negative numbers
total = 0

while n > 0:
    total += n % 10
    n //= 10

return total

Additional Improvements (Optional)

Update docstring to clarify behavior with negative numbers Add doctests for negative numbers Update main() to display absolute value when input is negative:

python
abs_display = f" (absolute value: {abs(number)})" if number < 0 else "" print(f"The sum of the digits of {number}{abs_display} is: {result}")

Test Cases

sum_of_digits(123) → 6 sum_of_digits(-123) → 6 sum_of_digits(0) → 0 sum_of_digits(-999) → 27

sum_of_digits.py (or the relevant file name)

️ Labels enhancement, good first issue, bug