Skip to content

Commit 84c93e7

Browse files
committed
refactor it using OOP
1 parent fa36d25 commit 84c93e7

1 file changed

Lines changed: 48 additions & 37 deletions

File tree

Lines changed: 48 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,63 @@
1-
print("🔢 Armstrong Number Checker 🔢")
2-
print("An Armstrong number equals the sum of its digits raised to the power of number of digits")
3-
print("Example: 153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153\n")
1+
class ArmstrongChecker:
2+
3+
def __init__(self, num):
4+
self.num = num
5+
self.original_num = num
6+
self.num_digits = len(str(num))
7+
self.total = 0
8+
9+
def calculate(self):
10+
temp = self.num
411

5-
try:
6-
num = int(input("➡️ Enter a number to check: "))
7-
8-
if num < 0:
9-
print("❌ Please enter a positive number!")
10-
else:
11-
original_num = num
12-
13-
num_digits = len(str(num))
14-
15-
total = 0
16-
temp = num
17-
1812
while temp > 0:
1913
digit = temp % 10
20-
total += digit ** num_digits
14+
self.total += digit ** self.num_digits
2115
temp //= 10
22-
23-
print(f"\n📊 Number: {original_num}")
24-
print(f"📐 Number of digits: {num_digits}")
25-
26-
print(f"\n🔍 Calculation:")
27-
temp = original_num
16+
17+
def show_calculation(self):
18+
temp = self.original_num
2819
digits = []
20+
2921
while temp > 0:
3022
digits.append(temp % 10)
3123
temp //= 10
24+
3225
digits.reverse()
33-
34-
calculation_parts = [f"{d}^{num_digits}" for d in digits]
26+
27+
calculation_parts = [f"{d}^{self.num_digits}" for d in digits]
3528
print(f" {' + '.join(calculation_parts)}")
36-
37-
values = [f"{d**num_digits}" for d in digits]
29+
30+
values = [f"{d**self.num_digits}" for d in digits]
3831
print(f" = {' + '.join(values)}")
39-
print(f" = {total}")
40-
41-
if total == original_num:
42-
print(f"\n{original_num} is an Armstrong Number! 🎉")
32+
print(f" = {self.total}")
33+
34+
def check(self):
35+
self.calculate()
36+
37+
print(f"\n📊 Number: {self.original_num}")
38+
print(f"📐 Number of digits: {self.num_digits}")
39+
40+
print(f"\n🔍 Calculation:")
41+
self.show_calculation()
42+
43+
if self.total == self.original_num:
44+
print(f"\n{self.original_num} is an Armstrong Number! 🎉")
4345
else:
44-
print(f"\n{original_num} is NOT an Armstrong Number.")
45-
46-
print("\n💡 Some Armstrong Numbers:")
47-
print(" 1-digit: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9")
48-
print(" 3-digit: 153, 370, 371, 407")
49-
print(" 4-digit: 1634, 8208, 9474")
46+
print(f"\n{self.original_num} is NOT an Armstrong Number.")
47+
48+
49+
print("🔢 Armstrong Number Checker 🔢")
50+
print("An Armstrong number equals the sum of its digits raised to the power of number of digits")
51+
print("Example: 153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153\n")
52+
53+
try:
54+
num = int(input("➡️ Enter a number to check: "))
55+
56+
if num < 0:
57+
print("❌ Please enter a positive number!")
58+
else:
59+
checker = ArmstrongChecker(num)
60+
checker.check()
5061

5162
except ValueError:
5263
print("❌ Invalid input! Please enter a valid number.")

0 commit comments

Comments
 (0)