Function printing the sum of the numbers between 2 given numbers:

```
def sum_of_numbers (start_number, end_number):
# n explicit
n = abs (end_number - start_number) + 1
# n / 2 represents the number of pairs,
# end_number + start_number
represents the total for each pair.
return (end_number + start_number) * (n / 2)
```

Function that prints the sum of odd numbers:

```
def sum_of_odds (start_number, end_number):
"" "start_number <end_number, start_number and end_number are odd" ""
# When adding odd numbers (1 + 3 + 5 + 7 + ....... + 2n-1)
# you will get (1, 4, 9, 16, ......., n ** 2), the total can be represented by
# n ** 2, to find the total of the first, say 100 numbers,
# we use 100/2 ** 2 (half even and half odd) or 2500, it works!
# To make this a little more general, let's say we want to find the odd
# numbers from 5 to 11, it's like adding the whole thing that is 6 ** 2 and
# subtract the first 2 odd numbers (6 ** 2 - 1 - 3)
start_number_position = (start_number + 1) / 2
end_number = (end_number + 1) / 2
return (end_number_position) ** 2 - (start_number_position - 1) ** 2
```

Prints the sum of even numbers:

```
def sum_of_evens (start_number, end_number):
"" "start_number < end_number, start_number and end_number are even"""
# To find even numbers total between 2 numbers, (e.g : 12->20)
# We add the odd numbers before each even number (11 + 13 + 15 + 17 + 19) then we
# add 1 for each number (1 * 5)
return sum_of_odds (start number-1, end-1 number)
+ (end_number - start_number) / 2 + 1
```