# 17. Nested `for` statements¶

A programming structure is said to be nested when it is inside another.

Each extra level with another `for` statement will have to be indented, that is, with spaces to the left.

This is an example with the `for` statement nested in two levels:

```print('Tabla de multiplicar:')
print('\t1\t2\t3\t4\t5\t6\t7\t8\t9\t10')
for i in range(1, 11):
print(i, end='\t')
for j in range(1, 11):
print(i*j, end='\t')
print()
```

Result:

```Tabla de multiplicar:
1       2       3       4       5       6       7       8       9       10
1   1       2       3       4       5       6       7       8       9       10
2   2       4       6       8       10      12      14      16      18      20
3   3       6       9       12      15      18      21      24      27      30
4   4       8       12      16      20      24      28      32      36      40
5   5       10      15      20      25      30      35      40      45      50
6   6       12      18      24      30      36      42      48      54      60
7   7       14      21      28      35      42      49      56      63      70
8   8       16      24      32      40      48      56      64      72      80
9   9       18      27      36      45      54      63      72      81      90
10  10      20      30      40      50      60      70      80      90      100
```

The character '\t' means tab and is used to separate two numbers into 8 characters.

## Exercises¶

1. Write a program that asks for a number and answers if that number is the result of multiplying two numbers from 1 to 10.

Clue:

```num = int( input('Escribe un número: ') )

for i in range(1, 11):
for j in range(1, 11):
if ... :
print('El número', num, 'es igual a', i, 'x', j)
...
else:
print('El número', num, 'no está en la tabla de multiplicar')
```
2. Write a program that generates a triangle of asterisks thanks to a nested loop. On the first line you need to draw an asterisk. On the second line you need to draw two asterisks. It will continue like this until ten asterisks are drawn on the tenth line

Clue:

```for i in range(...):
for j in range(...):
print('*', end='')
# Imprimir nueva línea
```

Exit:

```*
**
***
****
*****
******
*******
********
*********
**********
```
3. Modify the above program so that it prints a triangle of numbers as shown below:

```1
22
333
4444
55555
666666
7777777
88888888
999999999
```
4. Draw an inverted triangle starting with 10 asterisks and ending with a single asterisk.

Exit:

```**********
*********
********
*******
******
*****
****
***
**
*
```
5. Write a program that draws an asterisk chess with a nested loop that prints an asterisk when the sum of the two coordinates is divisible by 2. Otherwise it prints a space.

Remember that at the end of each line a new line must be printed with the `print()` instruction.

Clue:

```for i in range(1, 11):
for j in range(1, 11):
if (i + j) % 2 == 0:
...
```

Exit:

```* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
```
6. Modify the program above so that it draws another pattern when the sum of the coordinates is divisible by 3.

Exit:

``` *  *  *
*  *  *  *
*  *  *
*  *  *
*  *  *  *
*  *  *
*  *  *
*  *  *  *
*  *  *
*  *  *
```