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.

## Arithmetic Operators

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

### Addition

You can add numbers in Python using the `+`

operator.

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

`7`

### Subtraction

You can subtract numbers in Python using the `-`

operator.

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

`5`

### Multiplication

You can multiply numbers in Python using the `*`

operator.

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

`24`

### Division

You can divide numbers in Python using the `/`

operator.

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

`27.0`

### Modulus

You can find the remainder of a division in Python using the `%`

operator.

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

`18.0`

### Exponents

You can find the **power** of a number in Python using the `**`

operator.

```
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)
```

`25`

## 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 logarithms** 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`