4.12. Custom Modules#
There are lots of Python modules that exist for us to use. E.g. math,
random, time and datetime modules.
But if we want to write our own custom functions we can actually write our own modules! We just need to create a Python file:
module.py
where we write all of our functions. We can then import this as we would with our usual modules.
import module
To use a function in our module, we use:
module.function()
Code Challenge: Rectangle Properties
Write a module called
rectanglethat can be used to calculate properties of rectangles. You should be able to import functions from you module into your main script. Your module should contain the following 3 functions.Area specification (written in
rectangle.py)Formula for the area of a rectangle
\(\text{area} = \text{width} \times \text{height}\)
name:
areaparameters:
width(intorfloat),height(intorfloat)return: the area of the rectangle (
intorfloat)Perimeter specification (written in
rectangle.py)Formula for the perimeter of a rectangle
\(\text{perimeter} = 2\times\text{width} + 2 \times \text{height}\)
name:
perimeterparameters:
width(intorfloat),height(intorfloat)return: the perimeter of the rectangle (
intorfloat)Diagonal specification (written in
rectangle.py)Formula for the diagonal of a rectangle
\(\text{diagonal} = \sqrt{\text{width}^2 + \text{height}^2}\)
name:
perimeterparameters:
width(intorfloat),height(intorfloat)return: the perimeter of the rectangle (
intorfloat)Examples (running from
main.py)import rectangle print(rectangle.area(2, 10)) print(rectangle.perimeter(5, 7)) print(rectangle.diagonal(3, 4))20 24 5.0Solution
Solution is locked
Code Challenge: Intergalactic
Write a program that calculates an object’s weight in Newtons on the surface of:
Earth, and
another planet,
to four decimal places.
Your project must consists of two files:
intergalactic.py- takes care of input/output and running the program
physics.py- holds functions for the calculationsAcceleration specification (written in
physics.py)Formula for acceleration due to gravity on a planet’s surface
\(a = \frac{G m}{r^2}\)
where \(G = 6.67430\times10^{-11}\) is the gravitational constant and \(m`\) and \(r`\) are the mass and radius of the planet respectively.
name:
accelerationparameters:
planet_mass(floatexpected - kg),planet_radius(floatexpected - m)return: acceleration due to gravity on the planet’s surface (
float)Weight specification (written in
physics.py)Formula for calculating weight from object’s mass and acceleration
\(w = mg\)
where \(w`\) is the weight of the object in Newtons, \(m`\) is the mass of the object in kg and \(a`\) is the acceleration due to gravity on the planet. By default \(a = 9.80665\) m/s/s.
name:
weightparameters:
object_mass(floatexpected - kg),planet_acceleration(default=9.80665,``float`` expected - m/s/s)return: object’s weight (float)
In your
intergalactic.pyfile you should write a program that asks the user for an objects mass, planet’s mass and planet’s radius. Your program should then tell the user the weight of the given object on Earth and the weight on the specified planet to 4 decimal places.Example 1 (running from
intergalactic.py)Object's mass (kg): 100 Other planet's mass (kg): 0.642e24 Other planet's radius (m): 3396000 Weight on Earth (Newtons): 980.6650 Weight on other Planet (Newtons): 371.5398Example 2 (from
intergalactic.py)Object's mass (kg): 50 Other planet's mass (kg): 1.898e27 Other planet's radius (m): 7.1492e7 Weight on Earth (Newtons): 490.3325 Weight on other Planet (Newtons): 1239.2446Hint
We can represent very small numbers or very large numbers using scientific notation.
eXis used to represented \(\times 10^{X}\). For example1e-3is equivalent to \(1 \times 10^{-3}\) and5e2is equivalent to \(5\times10^{2}\). Python can automatically convert string representations of these values to floats.Floats can convert strings with scientific notation.
x = '1e-3' print(float(x)) y = '5e2' print(float(y))0.001 500.0Solution
Solution is locked