19. Definition of functions¶

Functions are blocks of code that perform a certain task that we want to execute once or several times. Functions are also used to group instructions with a descriptive name.

Thanks to functions we can divide a long program into many small blocks. This makes it much easier for other people to program and read the code.

Example of a function definition:

```def mensaje():
print('Hola, mundo.')

mensaje()
```

The function definition does nothing by itself. The function `message()` needs to be called in order for the code inside it to be executed.

Parameters and arguments¶

Parameters are the variables that are declared between parentheses in the function definition.

The arguments are the values ​​we use to call the function. The arguments allow you to customize the behavior of a function and can be of different types (boolean, numbers, text strings, etc).

Example of defining a function with one parameter (name):

```def saludo(nombre):
print('Hola', nombre, '¿Qué tal estás?')
```

Function call with two different arguments ('Javier' and 'Sara'):

```saludo('Javier')
saludo('Sara')
```

Result:

```Hola Javier ¿Qué tal estás?
Hola Sara ¿Qué tal estás?
```

`return` statement¶

The `return` statement is used to return data from the function.

It can also be used to terminate the function at that point, with behavior similar to a `break` statement in a loop.

Example of a function definition with `return`:

```def suma(a, b):
return a + b

print(suma(3, 5))
print(suma(11, 23))
```

Result:

```8
34
```

Exercises¶

1. Write a function that calculates if a number is even or odd and prints it to the screen.

Also write multiple function calls with multiple numbers to the program to verify that it works correctly.

Clue:

```def es_par(num):
...
```
2. Write the definition of a function called 'maximum(a, b)' to which we pass two numbers as arguments and which returns the greater of the two.

Also write several function calls with several pairs of numbers in the program to test that it works correctly.

3. Write the definition of a function that transforms degrees Celsius to degrees Fahrenheit knowing that:

```fahrenheit = celsius * 9 / 5 + 32.
```
4. Write the definition of a function that returns the factorial of a number.

The factorial is the result of multiplying all the numbers from 1 to the desired number.

Print the factorial of 5, 8, and 20.

Clue:

```def factorial(num):
...
...
```
5. Write the definition of a function that prints a row of n asterisks to the screen.

Call that function multiple times to print a triangle of asterisks starting with 1 asterisk and ending with 10 asterisks.

Clue:

```def asteriscos(n):
...
...

for num in range(1, 11):
...
```
6. Write the definition of a function that prints the multiplication table of a number.

Use this function to print the table of 3 and the table of 5.

Exit:

```3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
3 x 10 = 30

5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
5 x 10 = 50
```