Skip to content

Commit

Permalink
Merge branch 'main' into ajfumero8-patch-2
Browse files Browse the repository at this point in the history
  • Loading branch information
likechrisss authored Jan 13, 2025
2 parents eb4f1c0 + 17a44fa commit 2757ea2
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 1 deletion.
2 changes: 1 addition & 1 deletion collaboration/learning_goals.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ the challenges in this class

---

### Chrismy
### Chrismy Augustin

- Gain more knowledge and hands-on experience with industry-standard tools and
technologies like VS Code, Python, GitHub.
Expand Down
Empty file.
45 changes: 45 additions & 0 deletions solutions/challenge_9/sum_of_digits.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
A module for calculating the sum of the digits of a positive integer.
Module contents:
sum_of_digits: calculates the sum of the digits of a positive integer.
Created on January 3rd, 2025
@author: Semira Tesfai
"""


def sum_of_digits(n: int) -> int:
"""Calculate the sum of the digits of a positive integer.
Parameters
----------
n : int
The non-negative integer whose digits will be summed.
Returns
-------
int
The sum of the digits of the given integer.
Raises
------
ValueError
If the argument is not a non-negative integer.
Examples
--------
>>> sum_of_digits(123)
6
>>> sum_of_digits(4567)
22
>>> sum_of_digits(0)
0
"""

if not isinstance(n, int) or n < 0:
raise ValueError("input must be a non-negative integer.")

return sum(int(digit) for digit in str(n))
Empty file.
39 changes: 39 additions & 0 deletions solutions/tests/challenge_9/test_sum_of_digits.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Unit tests for the sum_of_digits function.
Created on January 3rd, 2025
"""

import unittest

from solutions.challenge_9.sum_of_digits import sum_of_digits


class TestSumOfDigits(unittest.TestCase):
"""Tests for the sum_of_digits function."""

def test_with_positive_integer(self):
"""Ensure that the sum of digits of a positive integer is calculated correctly."""
self.assertEqual(sum_of_digits(123), 6)

def test_with_large_integer(self):
"""Ensure that the sum of digits of a large positive integer is calculated correctly."""
self.assertEqual(sum_of_digits(4567), 22)

def test_with_zero(self):
"""Ensure that the sum of digits of zero is zero."""
self.assertEqual(sum_of_digits(0), 0)

def test_with_invalid_input(self):
"""Ensure that the function raises an assertion error for invalid inputs."""
with self.assertRaises(ValueError):
sum_of_digits(-5)
with self.assertRaises(ValueError):
sum_of_digits(4.5)
with self.assertRaises(ValueError):
sum_of_digits("123")


if __name__ == "__main__":
unittest.main()

0 comments on commit 2757ea2

Please sign in to comment.