File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1414
1515def digital_root (number : int ) -> int :
1616 """
17- Return the digital root of a non-negative integer number .
17+ Return the digital root of a non-negative integer.
1818
1919 The digital root is the single-digit value obtained by repeatedly summing
20- the decimal digits of number until only one digit remains. The input is taken by
21- its absolute value, so negative numbers behave like their positive
22- counterpart.
20+ the decimal digits of ``number`` until only one digit remains. Zero has a
21+ digital root of zero. The input must be an integer greater than or equal to
22+ zero.
23+
24+ See https://en.wikipedia.org/wiki/Digital_root for more information.
2325
2426 >>> digital_root(0)
2527 0
@@ -29,12 +31,22 @@ def digital_root(number: int) -> int:
2931 2
3032 >>> digital_root(12345)
3133 6
32- >>> digital_root(-45)
33- 9
3434 >>> digital_root(999999999999)
3535 9
36+ >>> digital_root(-1)
37+ Traceback (most recent call last):
38+ ...
39+ ValueError: number must be non-negative
40+ >>> digital_root(1.5)
41+ Traceback (most recent call last):
42+ ...
43+ TypeError: number must be an integer
3644 """
37- number = abs (number )
45+ if not isinstance (number , int ):
46+ raise TypeError ("number must be an integer" )
47+ if number < 0 :
48+ raise ValueError ("number must be non-negative" )
49+
3850 while number >= 10 :
3951 number = sum (int (digit ) for digit in str (number ))
4052 return number
You can’t perform that action at this time.
0 commit comments