forked from MIT-Emerging-Talent/ET6-practice-code-review
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into ajfumero8-patch-2
- Loading branch information
Showing
5 changed files
with
85 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |