Skip to content

Commit 9e1d83c

Browse files
committed
enahasment: add spy number in maths-special numbers
1 parent 791deb4 commit 9e1d83c

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
"""
2+
== Spy Number ==
3+
spy number is defined as a positive integer where the
4+
sum of its digits equals the product of its digits.
5+
6+
Examples of Spy Numbers: 22,123,1124,...
7+
https://www.scribd.com/document/895653665/Interesting-Number-Programs
8+
"""
9+
def is_spy_number(number: int) -> bool:
10+
"""
11+
This functions takes an integer number as input.
12+
returns True if the number is spy.
13+
>>> is_spy_number(-1)
14+
False
15+
>>> is_spy_number(0)
16+
False
17+
>>> is_spy_number(22)
18+
True
19+
>>> is_spy_number(1124)
20+
True
21+
>>> is_spy_number(124)
22+
False
23+
>>> is_spy_number(5.0)
24+
Traceback (most recent call last):
25+
...
26+
TypeError: Input value of [number=5.0] must be an integer
27+
"""
28+
if not isinstance(number, int):
29+
msg = f"Input value of [number={number}] must be an integer"
30+
raise TypeError(msg)
31+
if number <= 0:
32+
return False
33+
digit_sum = 0
34+
digit_mul = 1
35+
while number > 0:
36+
digit = number % 10
37+
digit_sum += digit
38+
digit_mul *= digit
39+
number //= 10
40+
if digit_sum == digit_mul:
41+
return True
42+
return False
43+
44+
45+
if __name__ == "__main__":
46+
import doctest
47+
48+
doctest.testmod()

0 commit comments

Comments
 (0)