Python is used extensively in finance, simulation, data science, statistical analysis, and in many other mathematically-intensive fields of work. The reason being is that Python makes working with numbers very easy and intuitive.

## Arithmetic Operators

Here are the most common **arithmetic operators** that allow you to manipulate numbers in Python.

### Addition

` ````
x = 2
y = 5
total = x + y
print(total)
```

` ````
7
```

### Subtraction

` ````
x = 8
y = 3
total = x - y
print(total)
```

` ````
5
```

### Multiplication

` ````
x = 4
y = 6
total = x * y
print(total)
```

` ````
24
```

### Division

` ````
x = 54
y = 2
total = x / y
print(total)
```

` ````
27.0
```

### Modulus

` ````
x = 64
y = 23
total = x % y
print(total)
```

### Exponents

` ````
x = 2
y = 4
total = x ** y
print(total)
```

` ````
16
```

### Order of Operations

**Order of Operations**, also known as **PEMDAS**, is at play here, including with the use of parentheses.

` ````
x = (4 * 5) + 20 / 4
print(x)
```

## Python Number Types

There are three kinds of numbers in Python, and they are as followed:

- int
- float
- complex

` ````
a = 1337 # int
b = 13.37 # float
c = 1337j # complex
print(type(a))
print(type(b))
print(type(c))
```

` ````
<class 'int'>
<class 'float'>
<class 'complex'>
```

### int

**Integers** are whole numbers like `4`

or `532`

. They can be positive or negative, and they don't contain any decimals.

` ````
a = 423
b = 74
c = 87937595
```

These are all valid integers.

### Float

**Floating point numbers** are numbers containing a decimal, and can also be positive or negative. Here are some examples:

` ````
a = 1.53
b = 3.1
c = -95.23
```

### Complex

**Complex** numbers are Python's representation of imaginary numbers, and they use a `j`

to represent the `i`

.

` ````
a = 4+2j
b = 9j
c = -3j
```

## Number Type Conversion

Python offers built-in methods to convert between these types using the `float()`

, `int()`

, and `complex()`

methods.

` ````
a = 5 # int
b = 3.3 # float
c = 7j # complex
float = float(a)
int = int(b)
complex = complex(a)
print(float)
print(int)
print(complex)
print(type(float))
print(type(int))
print(type(complex))
```

` ````
5.0
3
(5+0j)
<class 'float'>
<class 'int'>
<class 'complex'>
```

## Math Methods

We mentioned before that Python is used heavily in any field that utilizes math. The built-in methods that Python provides is a large reason why. Here are some of the most common ones:

### Absolute Value

Get the **absolute value** of a number by using the `abs()`

method:

` ````
number = -34
print(abs(number))
```

` ````
34
```

### Floor

Use the `floor()`

method to get the number passed in rounded down to the nearest integer if it is not already an integer.

` ````
import math
number = 6.21
print(math.min(number))
```

` ````
6
```

### Ceiling

Use the `ceil()`

method to get the number passed in rounded up to the next highest integer if it is not already an integer.

` ````
import math
number = 6.21
print(math.ceil(number))
```

` ````
7
```

### Natural Logarithm

You can get the **natural logarithmn** of a number using `log()`

.

` ````
import math
number = 123
print(math.log(number))
```

` ````
4.812184355372417
```

### Base-10 Logarithm

Alternatively, you can also get the **base-10 logarithm** of a number using `log10()`

.

` ````
import math
number = 123
print(math.log10(number))
```

` ````
2.089905111439398
```

### Maximum

You can get the **maximum** of two or more numbers using the `max()`

method:

` ````
number1 = 123
number2 = 456
number3 = 789
print(max(number1, number2, number3))
```

` ````
789
```

### Minimum

You can get the **minimum** of two or more numbers using the `min()`

method:

` ````
number1 = 123
number2 = 456
number3 = 789
print(min(number1, number2, number3))
```

` ````
123
```

### Power

You can take the **power** of a number using `pow`

.

` ````
base = 3
exponent = 4
print(pow(base, exponent))
```

` ````
81
```

### Round

You can **round** off any number to the nearest integer using `round()`

.

` ````
number = 3.1459
places = 3
print(round(number, places))
```

` ````
3.146
```

### Square Root

You can take the **square root** of a number using `sqrt()`

.

` ````
import math
number = 81
print(math.sqrt(number))
```

` ````
9
```

### Random

Generating random numbers in Python is easy. There's a module named `random`

that has all we need. Call the `randrange()`

method to get a number in between two other numbers you define:

` ````
import random
start = 1
end = 10
print(random.randrange(start, end))
```

` ````
6
```

## Math Constants

One last cool to point out is that Python's `math`

module also comes with some predefined constants for us.

### Euler's Number

One of the constants that the `math`

module comes with is **Euler's Number**:

` ````
import math
e = math.e
print(e)
```

` ````
2.718281828459045
```

### Pi

Python's `math`

module also comes with a value for **Pi**, the ratio of the circumference of a circle relative to its diameter.

` ````
import math
pi = math.pi
print(pi)
```

` ````
3.141592653589793
```

You've got to love some delicious pi. ๐ฅง๐ฅง๐ฅง