Skip to content

Commit ffb7e8e

Browse files
update-GM.PY
1 parent ee9706d commit ffb7e8e

File tree

1 file changed

+26
-6
lines changed

1 file changed

+26
-6
lines changed

maths/series/geometric_mean.py

+26-6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
"""
2+
GEOMETRIC MEAN : https://en.wikipedia.org/wiki/Geometric_mean
3+
"""
4+
5+
16
def is_geometric_series(series: list) -> bool:
27
"""
38
checking whether the input series is geometric series or not
@@ -8,14 +13,19 @@ def is_geometric_series(series: list) -> bool:
813
True
914
>>> is_geometric_series([1, 2, 3])
1015
False
16+
>>> is_geometric_series([0, 0, 3])
17+
False
1118
1219
"""
1320
if len(series) == 1:
1421
return True
15-
common_ratio = series[1] / series[0]
16-
for index in range(len(series) - 1):
17-
if series[index + 1] / series[index] != common_ratio:
18-
return False
22+
try:
23+
common_ratio = series[1] / series[0]
24+
for index in range(len(series) - 1):
25+
if series[index + 1] / series[index] != common_ratio:
26+
return False
27+
except ZeroDivisionError:
28+
return False
1929
return True
2030

2131

@@ -29,23 +39,33 @@ def geometric_mean(series: list) -> float:
2939
8.48528137423857
3040
>>> geometric_mean([4, 8, 16])
3141
7.999999999999999
42+
>>> geometric_mean(4)
43+
Traceback (most recent call last):
44+
...
45+
ValueError: Input series is not valid, valid series - [2, 4, 8]
3246
>>> geometric_mean([1, 2, 3])
3347
Traceback (most recent call last):
3448
...
3549
ValueError: Input list is not a geometric series
50+
>>> geometric_mean([0, 2, 3])
51+
Traceback (most recent call last):
52+
...
53+
ValueError: Input list is not a geometric series
3654
>>> geometric_mean([])
3755
Traceback (most recent call last):
3856
...
3957
ValueError: Input list must be a non empty list
4058
4159
"""
60+
if not isinstance(series, list):
61+
raise ValueError("Input series is not valid, valid series - [2, 4, 8]")
4262
if len(series) == 0:
4363
raise ValueError("Input list must be a non empty list")
4464
if not is_geometric_series(series):
4565
raise ValueError("Input list is not a geometric series")
4666
answer = 1
47-
for _ in series:
48-
answer *= _
67+
for value in series:
68+
answer *= value
4969
return pow(answer, 1 / len(series))
5070

5171

0 commit comments

Comments
 (0)