mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-23 21:11:08 +00:00
Dodecahedron surface area and volume (#6606)
* Hexagonal number sequence A hexagonal number sequence is a sequence of figurate numbers where the nth hexagonal number hₙ is the number of distinct dots in a pattern of dots consisting of the outlines of regular hexagons with sides up to n dots, when the hexagons are overlaid so that they share one vertex. This program returns the hexagonal number sequence of n length. * Update hexagonalnumbers.py * Update hexagonalnumbers.py * Update hexagonalnumbers.py * Update hexagonalnumbers.py * Update and rename hexagonalnumbers.py to hexagonal_numbers.py * Length must be a positive integer * Create dodecahedron.py * Update dodecahedron.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update dodecahedron.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update dodecahedron.py * Update dodecahedron.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update dodecahedron.py * Update dodecahedron.py * Apply suggestions from code review Co-authored-by: Paul <56065602+ZeroDayOwl@users.noreply.github.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Apply suggestions from code review * Update dodecahedron.py Co-authored-by: Christian Clauss <cclauss@me.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Paul <56065602+ZeroDayOwl@users.noreply.github.com>
This commit is contained in:
parent
506b63f02d
commit
ded5deabe9
73
maths/dodecahedron.py
Normal file
73
maths/dodecahedron.py
Normal file
|
@ -0,0 +1,73 @@
|
|||
# dodecahedron.py
|
||||
|
||||
"""
|
||||
A regular dodecahedron is a three-dimensional figure made up of
|
||||
12 pentagon faces having the same equal size.
|
||||
"""
|
||||
|
||||
|
||||
def dodecahedron_surface_area(edge: float) -> float:
|
||||
"""
|
||||
Calculates the surface area of a regular dodecahedron
|
||||
a = 3 * ((25 + 10 * (5** (1 / 2))) ** (1 / 2 )) * (e**2)
|
||||
where:
|
||||
a --> is the area of the dodecahedron
|
||||
e --> is the length of the edge
|
||||
reference-->"Dodecahedron" Study.com
|
||||
<https://study.com/academy/lesson/dodecahedron-volume-surface-area-formulas.html>
|
||||
|
||||
:param edge: length of the edge of the dodecahedron
|
||||
:type edge: float
|
||||
:return: the surface area of the dodecahedron as a float
|
||||
|
||||
|
||||
Tests:
|
||||
>>> dodecahedron_surface_area(5)
|
||||
516.1432201766901
|
||||
>>> dodecahedron_surface_area(10)
|
||||
2064.5728807067603
|
||||
>>> dodecahedron_surface_area(-1)
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
ValueError: Length must be a positive.
|
||||
"""
|
||||
|
||||
if edge <= 0 or not isinstance(edge, int):
|
||||
raise ValueError("Length must be a positive.")
|
||||
return 3 * ((25 + 10 * (5 ** (1 / 2))) ** (1 / 2)) * (edge**2)
|
||||
|
||||
|
||||
def dodecahedron_volume(edge: float) -> float:
|
||||
"""
|
||||
Calculates the volume of a regular dodecahedron
|
||||
v = ((15 + (7 * (5** (1 / 2)))) / 4) * (e**3)
|
||||
where:
|
||||
v --> is the volume of the dodecahedron
|
||||
e --> is the length of the edge
|
||||
reference-->"Dodecahedron" Study.com
|
||||
<https://study.com/academy/lesson/dodecahedron-volume-surface-area-formulas.html>
|
||||
|
||||
:param edge: length of the edge of the dodecahedron
|
||||
:type edge: float
|
||||
:return: the volume of the dodecahedron as a float
|
||||
|
||||
Tests:
|
||||
>>> dodecahedron_volume(5)
|
||||
957.8898700780791
|
||||
>>> dodecahedron_volume(10)
|
||||
7663.118960624633
|
||||
>>> dodecahedron_volume(-1)
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
ValueError: Length must be a positive.
|
||||
"""
|
||||
|
||||
if edge <= 0 or not isinstance(edge, int):
|
||||
raise ValueError("Length must be a positive.")
|
||||
return ((15 + (7 * (5 ** (1 / 2)))) / 4) * (edge**3)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import doctest
|
||||
|
||||
doctest.testmod()
|
Loading…
Reference in New Issue
Block a user