Python Math ExamplesUse math methods. Review methods like sqrt, math.floor and math.ceil.
Math. In ancient times, great advances were made in mathematics. A scroll shows a circle. It calculates its area. Today computers do these calculations.
In Python we discover many prebuilt functions. Consider a square root. We just call math.sqrt. No scroll is required for this calculation.
Two common math functions are floor and ceil. Floor removes the digits past the decimal place. In this example it changes 100.7 to 100.floor
Ceil: This rounds the number up to the next highest one. A ceiling is always above us.
Tip: When using methods like floor and ceil, consistency is helpful. If some parts of the program use these methods, others should too.
Python program that imports math
# Fractional number.
n = 100.7
# Absolute value.
With sum, we add together the elements in a list. Fsum is a more accurate way to sum floating-point numbers. On integers, the methods are equal. But fsum is better for floats.sum
Tip: Sum and fsum can be used on any iterable collection. This includes the list, tuple and set.
Caution: If the iterable contains a non-numeric value, a TypeError will occur. We handle this in an except statement.Error
Here: In this example, the sum() method causes a rounding error to occur. The fsum() method returns a better sum.
Python program that uses sum, fsum
# Input list.
values = [0.9999999, 1, 2, 3]
# Sum values in list.
r = sum(values)
# Sum values with fsum.
r = math.fsum(values)
Truncating a number removes everything past the decimal place. This does not round the number. Instead it just eliminates the fractional part.
Note: The number before the decimal place is never changed with math.trunc. This is similar to casting to (int) in C-like languages.
Python program that uses math.trunc
# Truncate this value.
value1 = 123.45
truncate1 = math.trunc(value1)
# Truncate another value.
value2 = 345.67
truncate2 = math.trunc(value2)
Exponentiation multiplies a number by itself a certain number of times. With math.pow we apply this operation. Math.pow is similar to the ** operator.
But: When math.pow is applied, the result is always converted to a float. This is not the case with the ** operator.
Tip: More examples of using the exponent operator are available on the numbers page.Numbers: Square, Cube
Python program that uses math.pow
# Use math.pow method.
a = math.pow(2, 3)
# Use operator.
b = 2 ** 3
# Print results.
In most programs, we do not need square roots. But when we do, the math.sqrt method is useful. It receives one argument. It returns the square root (in floating-point form).
Tip: If your program often uses square roots, a cache or lookup table may be helpful. You could memoize the result of math.sqrt for speed.Memoize
Python program that uses math.sqrt
value1 = 9
value2 = 16
value3 = 100
# Use sqrt method.
Pi, E. You probably know the approximate values of E and pi. And you could specify these directly in a Python program. But with math.e and math.pi, we avoid this hassle.
Python program that uses math.e, pi
# This returns the value of e.
# And this is pi.
This is a built-in function in Python. We invoke it with one argument. Abs returns the absolute value of that argument.abs
This method rounds a number up or down. We call it with a float argument. We can specify how many digits past the decimal place we want to keep.round
Math is used in the real world. Please also check out the compound_interest Python implementation. It uses pow to compute an exponential function.Compound Interest
Math is everywhere.
It is possible to directly compute mathematical functions. We could add methods that use arithmetic operators. But this adds complexity. It bloats programs.
Note: Thanks to Sumant Kanala for writing in with a small correction to the math.trunc explanation.
Instead, we can use built-ins. These are found in the default and math modules. This approach is more effective. It is simpler. It makes programs easier to understand and maintain.
© 2007-2020 Sam Allen. Every person is special and unique. Send bug reports to email@example.com.