geekcomputers / geekcomputers/Python

Add support for negative numbers in sum_of_digits function

Offen Anfängerfreundlich
#3,060 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Python
Sterne
35.4k
Forks
12.9k
Ø Merge
2 Std. 37 Min.
Gemergte PRs (30 T.)
1

Beschreibung

🐛 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

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Öffne sum_of_digits.py oder die relevante Datei und finde die Funktion sum_of_digits sowie ihre aktuelle Verarbeitung von Ganzzahleingaben. Überprüfe die aufgeführten Fälle, einschließlich negativer Werte und null, und aktualisiere die Dokumentation oder Beispiele, falls vorhanden; die Aufgabe ist abgeschlossen, wenn negative Eingaben die Ziffernsumme ihres Absolutwerts zurückgeben, ohne bestehende Fälle zu beeinträchtigen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
backend
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Ruhig
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
74/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.