From 9e1d83cb1c05d3ec7cb305319b6ec71cb404638b Mon Sep 17 00:00:00 2001 From: BhaktiVagadia Date: Thu, 7 May 2026 16:23:12 +0530 Subject: [PATCH 1/3] enahasment: add spy number in maths-special numbers --- maths/special_numbers/spy_number.py | 48 +++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 maths/special_numbers/spy_number.py diff --git a/maths/special_numbers/spy_number.py b/maths/special_numbers/spy_number.py new file mode 100644 index 000000000000..502c775ba45d --- /dev/null +++ b/maths/special_numbers/spy_number.py @@ -0,0 +1,48 @@ +""" +== Spy Number == + spy number is defined as a positive integer where the + sum of its digits equals the product of its digits. + +Examples of Spy Numbers: 22,123,1124,... +https://www.scribd.com/document/895653665/Interesting-Number-Programs +""" +def is_spy_number(number: int) -> bool: + """ + This functions takes an integer number as input. + returns True if the number is spy. + >>> is_spy_number(-1) + False + >>> is_spy_number(0) + False + >>> is_spy_number(22) + True + >>> is_spy_number(1124) + True + >>> is_spy_number(124) + False + >>> is_spy_number(5.0) + Traceback (most recent call last): + ... + TypeError: Input value of [number=5.0] must be an integer + """ + if not isinstance(number, int): + msg = f"Input value of [number={number}] must be an integer" + raise TypeError(msg) + if number <= 0: + return False + digit_sum = 0 + digit_mul = 1 + while number > 0: + digit = number % 10 + digit_sum += digit + digit_mul *= digit + number //= 10 + if digit_sum == digit_mul: + return True + return False + + +if __name__ == "__main__": + import doctest + + doctest.testmod() \ No newline at end of file From b0fac1b16d1014f3cb4642546e614f5b4dbb6730 Mon Sep 17 00:00:00 2001 From: BhaktiVagadia Date: Thu, 7 May 2026 16:33:50 +0530 Subject: [PATCH 2/3] changes in return format --- maths/special_numbers/spy_number.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/maths/special_numbers/spy_number.py b/maths/special_numbers/spy_number.py index 502c775ba45d..7371f87d2f16 100644 --- a/maths/special_numbers/spy_number.py +++ b/maths/special_numbers/spy_number.py @@ -37,9 +37,7 @@ def is_spy_number(number: int) -> bool: digit_sum += digit digit_mul *= digit number //= 10 - if digit_sum == digit_mul: - return True - return False + return True if digit_sum == digit_mul else False if __name__ == "__main__": From 9870bd355f131a96a78f5900ae9440187a88188b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 7 May 2026 11:06:08 +0000 Subject: [PATCH 3/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/special_numbers/spy_number.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/maths/special_numbers/spy_number.py b/maths/special_numbers/spy_number.py index 7371f87d2f16..f313951a8510 100644 --- a/maths/special_numbers/spy_number.py +++ b/maths/special_numbers/spy_number.py @@ -6,6 +6,8 @@ Examples of Spy Numbers: 22,123,1124,... https://www.scribd.com/document/895653665/Interesting-Number-Programs """ + + def is_spy_number(number: int) -> bool: """ This functions takes an integer number as input. @@ -43,4 +45,4 @@ def is_spy_number(number: int) -> bool: if __name__ == "__main__": import doctest - doctest.testmod() \ No newline at end of file + doctest.testmod()