Dibujos ASCII - Bucle for - Soluciones (1)

Se ofrecen a continuación unas posibles soluciones de los ejercicios ASCII bucle for (1).

Bucles no anidados

ASCII - Bucle for (1) - A-1

anchura = int(input("Anchura de la línea: "))

for i in range(anchura):
    print("+ ", end="")

ASCII - Bucle for (1) - A-2

anchura = int(input("Anchura de la línea: "))

print("+ ", end="")
for i in range(anchura - 2):
    print("- ", end="")
print("+ ")

ASCII - Bucle for (1) - A-3

altura = int(input("Altura de la figura: "))

for i in range(altura):
    print("+")

ASCII - Bucle for (1) - A-4

altura = int(input("Altura de la figura: "))

print("+ ")
for i in range(altura - 2):
    print("|")
print("+ ")

B. Bucles anidados (variables independientes)

ASCII - Bucle for (1) - B-1

ASCII - Bucle for (1) - B-2

ASCII - Bucle for (1) - B-3

ASCII - Bucle for (1) - B-4

anchura = int(input("Anchura del rectángulo: "))
altura = int(input("Altura del rectángulo: "))
numero = int(input("Número de rectángulos en horizontal: "))

for j in range(anchura*numero - numero + 1):
    print("* ", end="")
print()

for i in range(altura - 2):
    for k in range(numero):
        print("* ", end="")
        for j in range(anchura - 2):
            print("  ", end="")
    print("*")

for j in range(anchura*numero - numero + 1):
    print("* ", end="")

ASCII - Bucle for (1) - B-5

anchura = int(input("Anchura del rectángulo: "))
altura = int(input("Altura del rectángulo: "))
horizontal = int(input("Número de rectángulos en horizontal: "))
vertical = int(input("Número de rectángulos en vertical: "))

for j in range(anchura*horizontal - horizontal + 1):
    print("* ", end="")
print()

for l in range(vertical):
    for i in range(altura - 2):
        for k in range(horizontal):
            print("* ", end="")
            for j in range(anchura - 2):
                print("  ", end="")
        print("* ")

    for j in range(anchura*horizontal - horizontal + 1):
        print("* ", end="")
    print()

C. Más bucles anidados (variables independientes)

El procedimiento para resolver estos ejercicios es siempre el mismo:

ASCII - Bucle for (1) - C-1 - Letra L

ASCII - Bucle for (1) - C-2 - Letra C

print("Letra C")
altura = int(input("Altura de la letra C: "))
anchura = int(input("Anchura de la letra C: "))
grosor = int(input("Grosor de la letra C: "))

if altura <= 0 or anchura <= 0 or grosor <= 0:
    print("Los tres valores deben ser positivos.")
elif altura <= 2 * grosor:
    print("La altura debe ser mayor que el doble del grosor.")
elif anchura <= grosor:
    print("La anchura debe ser mayor que el grosor.")
else:
    for i in range(grosor):
        for j in range(anchura):
            print("* ", end="")
        print()

    for i in range(altura - 2 * grosor):
        for j in range(grosor):
            print("* ", end="")
        print()

    for i in range(grosor):
        for j in range(anchura):
            print("* ", end="")
        print()

ASCII - Bucle for (1) - C-3 - Letra U

print("Letra U")
altura = int(input("Altura de la letra U: "))
anchura = int(input("Anchura de la letra U: "))
grosor = int(input("Grosor de la letra U: "))

if altura <= 0 or anchura <= 0 or grosor <= 0:
    print("Los tres valores deben ser positivos.")
elif altura <= grosor:
    print("La altura debe ser mayor que el grosor.")
elif anchura <= 2 * grosor:
    print("La anchura debe ser mayor que el doble del grosor.")
else:
    for i in range(altura - grosor):
        for j in range(grosor):
             print("* ", end="")
        for j in range(anchura - 2 * grosor):
            print("  ", end="")
        for j in range(grosor):
            print("* ", end="")
        print()

    for i in range(grosor):
        for j in range(anchura):
            print("* ", end="")
        print()

ASCII - Bucle for (1) - C-4 - Letra O

print("Letra O")
altura = int(input("Altura de la letra O: "))
anchura = int(input("Anchura de la letra O: "))
grosor = int(input("Grosor de la letra O: "))

if altura <= 0 or anchura <= 0 or grosor <= 0:
    print("Los tres valores deben ser positivos.")
elif altura <= 2 * grosor:
    print("La altura debe ser mayor que el doble del grosor.")
elif anchura <= 2 * grosor:
    print("La anchura debe ser mayor que el doble del grosor.")
else:
    for i in range(grosor):
        for j in range(anchura):
            print("* ", end="")
        print()

    for i in range(altura - 2 * grosor):
        for j in range(grosor):
             print("* ", end="")
        for j in range(anchura - 2 * grosor):
            print("  ", end="")
        for j in range(grosor):
            print("* ", end="")
        print()

    for i in range(grosor):
        for j in range(anchura):
            print("* ", end="")
        print()

ASCII - Bucle for (1) - C-5 - Letra T

print("Letra T")
altura = int(input("Altura de la letra T: "))
anchura = int(input("Anchura de la letra T: "))
grosor = int(input("Grosor de la letra T: "))

if altura <= 0 or anchura <= 0 or grosor <= 0:
    print("Los tres valores deben ser positivos.")
elif altura <= grosor:
    print("La altura debe ser mayor que el grosor.")
elif anchura <= grosor + 1:
    print("La anchura debe ser al menos dos unidades mayor que el grosor.")
elif anchura % 2 != grosor % 2:
    print("La anchura y el grosor deben ser ambos pares o ambos impares")
else:
    for i in range(grosor):
        for j in range(anchura):
            print("* ", end="")
        print()

    for i in range(altura - grosor):
        for j in range((anchura - grosor) // 2):
            print("  ", end="")
        for j in range(grosor):
            print("* ", end="")
        print()

Para escribir los espacios a la izquierda de la barra vertical, en vez del operador cociente (//):

        for j in range((anchura - grosor) // 2):

se podría haber utilizado la división (ya que anchura y grosor son ambos o impares, por lo que su diferencia es par), pero como el resultado de una división de enteros es de tipo decimal, es necesario convertirla a entero con la función int():

        for j in range(int((anchura - grosor) / 2)):

ASCII - Bucle for (1) - C-6 - Letra H

print("Letra H")
altura = int(input("Altura de la letra H: "))
anchura = int(input("Anchura de la letra H: "))
grosor = int(input("Grosor de la letra H: "))

if altura <= 0 or anchura <= 0 or grosor <= 0:
    print("Los tres valores deben ser positivos.")
elif altura <= grosor + 1:
    print("La altura debe ser al menos dos unidades mayor que el grosor.")
elif anchura <= 2 * grosor:
    print("La anchura debe ser mayor que el doble del grosor.")
elif altura % 2 != grosor % 2:
    print("La altura y el grosor deben ser ambos pares o ambos impares")
else:
    for i in range((altura - grosor) // 2):
        for j in range(grosor):
            print("* ", end="")
        for j in range(anchura - 2 * grosor):
            print("  ", end="")
        for j in range(grosor):
            print("* ", end="")
        print()

    for i in range(grosor):
        for j in range(anchura):
            print("* ", end="")
        print()

    for i in range((altura - grosor) // 2):
        for j in range(grosor):
            print("* ", end="")
        for j in range(anchura - 2 * grosor):
            print("  ", end="")
        for j in range(grosor):
            print("* ", end="")
        print()