17. Sentencias for anidadas

Una estructura de programación se dice que está anidada cuando se encuentra dentro de otra.

Cada nivel extra con otra instrucción for habrá que escribir el código con sangría, es decir, con espacios a la izquierda.

Este es un ejemplo con la instrucción for anidada en dos niveles que genera una tabla de multiplicar:

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

Resultado:

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

El carácter '\t' significa tabulación y sirve para separar dos números en 8 caracteres.

Ejercicios

  1. Escribe un programa que pida un número y te responda si ese número es el resultado de multiplicar dos números en el rango del 1 al 10.

    Pista:

    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)
    
  2. Escribe un programa que genere un triángulo de asteriscos gracias a un bucle anidado. En la primera línea debe dibujar un asterisco. En la segunda línea debe dibujar dos asteriscos. Seguirá así hasta dibujar diez asteriscos en la décima línea

    Pista:

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

    Salida:

    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    *********
    **********
    
  3. Modifica el programa anterior para que imprima un triángulo de números como se muestra a continuación:

    1
    22
    333
    4444
    55555
    666666
    7777777
    88888888
    999999999
    
  4. Dibuja un triángulo invertido que comience con 10 asteriscos y termine con un solo asterisco.

    Salida:

    **********
    *********
    ********
    *******
    ******
    *****
    ****
    ***
    **
    *
    
  5. Escribe un programa que dibuje un ajedrez de asteriscos con un bucle anidado que imprima un asterisco cuando la suma de las dos coordenadas sea divisible por 2. En caso contrario debe imprimir un espacio.

    El tamaño de la cuadrícula será de 10 filas por 10 columnas.

    Recuerda que al final de cada línea se debe imprimir una nueva línea con la instrucción print().

    Pista:

    for i in range(...):
        for j in range(...):
            if (i + j) % 2 == 0:
                ...
            else:
                ...
        ...
    

    Salida:

    * * * * *
     * * * * *
    * * * * *
     * * * * *
    * * * * *
     * * * * *
    * * * * *
     * * * * *
    * * * * *
     * * * * *
    
  6. Modifica el programa anterior para que dibuje otro patrón de puntos. Cada punto aparecerá cuando la suma de sus coordenadas sea divisible por 3.

    Salida:

     *  *  *
    *  *  *  *
      *  *  *
     *  *  *
    *  *  *  *
      *  *  *
     *  *  *
    *  *  *  *
      *  *  *
     *  *  *