From 84c93e7f97b0bb65a6d31b521877e8cbc93a6736 Mon Sep 17 00:00:00 2001 From: Sangita Bera Date: Fri, 22 May 2026 17:29:12 +0530 Subject: [PATCH] refactor it using OOP --- math/Armstrong-Number/Armstrong-Number.py | 85 +++++++++++++---------- 1 file changed, 48 insertions(+), 37 deletions(-) diff --git a/math/Armstrong-Number/Armstrong-Number.py b/math/Armstrong-Number/Armstrong-Number.py index cafb068..3c31256 100644 --- a/math/Armstrong-Number/Armstrong-Number.py +++ b/math/Armstrong-Number/Armstrong-Number.py @@ -1,52 +1,63 @@ -print("šŸ”¢ Armstrong Number Checker šŸ”¢") -print("An Armstrong number equals the sum of its digits raised to the power of number of digits") -print("Example: 153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153\n") +class ArmstrongChecker: + + def __init__(self, num): + self.num = num + self.original_num = num + self.num_digits = len(str(num)) + self.total = 0 + + def calculate(self): + temp = self.num -try: - num = int(input("āž”ļø Enter a number to check: ")) - - if num < 0: - print("āŒ Please enter a positive number!") - else: - original_num = num - - num_digits = len(str(num)) - - total = 0 - temp = num - while temp > 0: digit = temp % 10 - total += digit ** num_digits + self.total += digit ** self.num_digits temp //= 10 - - print(f"\nšŸ“Š Number: {original_num}") - print(f"šŸ“ Number of digits: {num_digits}") - - print(f"\nšŸ” Calculation:") - temp = original_num + + def show_calculation(self): + temp = self.original_num digits = [] + while temp > 0: digits.append(temp % 10) temp //= 10 + digits.reverse() - - calculation_parts = [f"{d}^{num_digits}" for d in digits] + + calculation_parts = [f"{d}^{self.num_digits}" for d in digits] print(f" {' + '.join(calculation_parts)}") - - values = [f"{d**num_digits}" for d in digits] + + values = [f"{d**self.num_digits}" for d in digits] print(f" = {' + '.join(values)}") - print(f" = {total}") - - if total == original_num: - print(f"\nāœ… {original_num} is an Armstrong Number! šŸŽ‰") + print(f" = {self.total}") + + def check(self): + self.calculate() + + print(f"\nšŸ“Š Number: {self.original_num}") + print(f"šŸ“ Number of digits: {self.num_digits}") + + print(f"\nšŸ” Calculation:") + self.show_calculation() + + if self.total == self.original_num: + print(f"\nāœ… {self.original_num} is an Armstrong Number! šŸŽ‰") else: - print(f"\nāŒ {original_num} is NOT an Armstrong Number.") - - print("\nšŸ’” Some Armstrong Numbers:") - print(" 1-digit: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9") - print(" 3-digit: 153, 370, 371, 407") - print(" 4-digit: 1634, 8208, 9474") + print(f"\nāŒ {self.original_num} is NOT an Armstrong Number.") + + +print("šŸ”¢ Armstrong Number Checker šŸ”¢") +print("An Armstrong number equals the sum of its digits raised to the power of number of digits") +print("Example: 153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153\n") + +try: + num = int(input("āž”ļø Enter a number to check: ")) + + if num < 0: + print("āŒ Please enter a positive number!") + else: + checker = ArmstrongChecker(num) + checker.check() except ValueError: print("āŒ Invalid input! Please enter a valid number.") \ No newline at end of file