Skip to content

Commit 9b30c55

Browse files
(Feature)Add a Spy number in Maths->Special Number (#14652)
* enahasment: add spy number in maths-special numbers * changes in return format * changes in return format * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent b0e80a4 commit 9b30c55

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+
10+
11+
def is_spy_number(number: int) -> bool:
12+
"""
13+
This functions takes an integer number as input.
14+
returns True if the number is spy.
15+
>>> is_spy_number(-1)
16+
False
17+
>>> is_spy_number(0)
18+
False
19+
>>> is_spy_number(22)
20+
True
21+
>>> is_spy_number(1124)
22+
True
23+
>>> is_spy_number(124)
24+
False
25+
>>> is_spy_number(5.0)
26+
Traceback (most recent call last):
27+
...
28+
TypeError: Input value of [number=5.0] must be an integer
29+
"""
30+
if not isinstance(number, int):
31+
msg = f"Input value of [number={number}] must be an integer"
32+
raise TypeError(msg)
33+
if number <= 0:
34+
return False
35+
digit_sum = 0
36+
digit_mul = 1
37+
while number > 0:
38+
digit = number % 10
39+
digit_sum += digit
40+
digit_mul *= digit
41+
number //= 10
42+
return digit_sum == digit_mul
43+
44+
45+
if __name__ == "__main__":
46+
import doctest
47+
48+
doctest.testmod()

0 commit comments

Comments
 (0)