Skip to content

Commit 0df4ef4

Browse files
committed
Add additional doctests for the perfect number algorithm and fix grammatical errors. Contributes to TheAlgorithms#9943
1 parent ae28fa7 commit 0df4ef4

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

Diff for: maths/perfect_number.py

+15-5
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,27 @@ def perfect(number: int) -> bool:
4646
False
4747
>>> perfect(-1)
4848
False
49+
>>> perfect(33550336) # Large perfect number
50+
True
51+
>>> perfect(33550337) # Just above a large perfect number
52+
False
53+
>>> perfect(1) # Edge case: 1 is not a perfect number
54+
False
55+
>>> perfect("123") # String representation of a number
56+
Traceback (most recent call last):
57+
...
58+
ValueError: number must be an integer
4959
>>> perfect(12.34)
5060
Traceback (most recent call last):
5161
...
52-
ValueError: number must an integer
62+
ValueError: number must be an integer
5363
>>> perfect("Hello")
5464
Traceback (most recent call last):
5565
...
56-
ValueError: number must an integer
66+
ValueError: number must be an integer
5767
"""
5868
if not isinstance(number, int):
59-
raise ValueError("number must an integer")
69+
raise ValueError("number must be an integer")
6070
if number <= 0:
6171
return False
6272
return sum(i for i in range(1, number // 2 + 1) if number % i == 0) == number
@@ -70,8 +80,8 @@ def perfect(number: int) -> bool:
7080
try:
7181
number = int(input("Enter a positive integer: ").strip())
7282
except ValueError:
73-
msg = "number must an integer"
83+
msg = "number must be an integer"
7484
print(msg)
7585
raise ValueError(msg)
7686

77-
print(f"{number} is {'' if perfect(number) else 'not '}a Perfect Number.")
87+
print(f"{number} is {'' if perfect(number) else 'not '}a Perfect Number.")

0 commit comments

Comments
 (0)