update volumes with type hints + some refactoring (#1353)

* update volumes with type hints + some refactoring

* added docstrings

* Use float instead of ints in doctest results

Co-authored-by: Christian Clauss <cclauss@me.com>
This commit is contained in:
Yurii 2020-01-05 08:19:29 +02:00 committed by Christian Clauss
parent d4fc55c5fc
commit 1cc817bcc9

View File

@ -3,80 +3,116 @@ Find Volumes of Various Shapes.
Wikipedia reference: https://en.wikipedia.org/wiki/Volume
"""
from math import pi
from typing import Union
from math import pi, pow
def vol_cube(side_length):
"""Calculate the Volume of a Cube."""
# Cube side_length.
return float(side_length ** 3)
def vol_cube(side_length: Union[int, float]) -> float:
"""
Calculate the Volume of a Cube.
>>> vol_cube(1)
1.0
>>> vol_cube(3)
27.0
"""
return pow(side_length, 3)
def vol_cuboid(width, height, length):
"""Calculate the Volume of a Cuboid."""
# Multiply lengths together.
def vol_cuboid(width: float, height: float, length: float) -> float:
"""
Calculate the Volume of a Cuboid.
:return multiple of width, length and height
>>> vol_cuboid(1, 1, 1)
1.0
>>> vol_cuboid(1, 2, 3)
6.0
"""
return float(width * height * length)
def vol_cone(area_of_base, height):
def vol_cone(area_of_base: float, height: float) -> float:
"""
Calculate the Volume of a Cone.
Wikipedia reference: https://en.wikipedia.org/wiki/Cone
volume = (1/3) * area_of_base * height
:return (1/3) * area_of_base * height
>>> vol_cone(10, 3)
10.0
>>> vol_cone(1, 1)
0.3333333333333333
"""
return (float(1) / 3) * area_of_base * height
return area_of_base * height / 3.0
def vol_right_circ_cone(radius, height):
def vol_right_circ_cone(radius: float, height: float) -> float:
"""
Calculate the Volume of a Right Circular Cone.
Wikipedia reference: https://en.wikipedia.org/wiki/Cone
volume = (1/3) * pi * radius^2 * height
:return (1/3) * pi * radius^2 * height
>>> vol_right_circ_cone(2, 3)
12.566370614359172
"""
return (float(1) / 3) * pi * (radius ** 2) * height
return pi * pow(radius, 2) * height / 3.0
def vol_prism(area_of_base, height):
def vol_prism(area_of_base: float, height: float) -> float:
"""
Calculate the Volume of a Prism.
V = Bh
Wikipedia reference: https://en.wikipedia.org/wiki/Prism_(geometry)
:return V = Bh
>>> vol_prism(10, 2)
20.0
>>> vol_prism(11, 1)
11.0
"""
return float(area_of_base * height)
def vol_pyramid(area_of_base, height):
def vol_pyramid(area_of_base: float, height: float) -> float:
"""
Calculate the Volume of a Prism.
V = (1/3) * Bh
Calculate the Volume of a Pyramid.
Wikipedia reference: https://en.wikipedia.org/wiki/Pyramid_(geometry)
:return (1/3) * Bh
>>> vol_pyramid(10, 3)
10.0
>>> vol_pyramid(1.5, 3)
1.5
"""
return (float(1) / 3) * area_of_base * height
return area_of_base * height / 3.0
def vol_sphere(radius):
def vol_sphere(radius: float) -> float:
"""
Calculate the Volume of a Sphere.
V = (4/3) * pi * r^3
Wikipedia reference: https://en.wikipedia.org/wiki/Sphere
:return (4/3) * pi * r^3
>>> vol_sphere(5)
523.5987755982989
>>> vol_sphere(1)
4.1887902047863905
"""
return (float(4) / 3) * pi * radius ** 3
return 4 / 3 * pi * pow(radius, 3)
def vol_circular_cylinder(radius, height):
def vol_circular_cylinder(radius: float, height: float) -> float:
"""Calculate the Volume of a Circular Cylinder.
Wikipedia reference: https://en.wikipedia.org/wiki/Cylinder
volume = pi * radius^2 * height
:return pi * radius^2 * height
>>> vol_circular_cylinder(1, 1)
3.141592653589793
>>> vol_circular_cylinder(4, 3)
150.79644737231007
"""
return pi * radius ** 2 * height
return pi * pow(radius, 2) * height
def main():