Bucle for - Soluciones (2)

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

A. Repasar las tablas de multiplicar

Bucle for (2) - A-1

Una posible solución es:

from random import randrange

a = randrange(2, 11)
b = randrange(2, 11)

respuesta = int(input(f"¿Cuánto es {a} x {b}? "))

if respuesta == a * b:
    print("¡Respuesta correcta!")
else:
    print("¡Respuesta incorrecta!")

Bucle for (2) - A-2

Una posible solución es:

from random import randrange

cantidad = int(input("Número de preguntas: "))

if cantidad < 1:
    print("El número de preguntas debe ser al menos 1")
else:
    for i in range(cantidad):
        a = randrange(2, 11)
        b = randrange(2, 11)

        respuesta = int(input(f"¿Cuánto es {a} x {b}? "))

        if respuesta == a * b:
            print("¡Respuesta correcta!")
        else:
            print("¡Respuesta incorrecta!")
        print()

Bucle for (2) - A-3

Una posible solución es:

from random import randrange

cantidad = int(input("Número de preguntas: "))
print()

if cantidad < 1:
    print("El número de preguntas debe ser al menos 1")
else:
    correctas = 0
    for i in range(cantidad):
        a = randrange(2, 11)
        b = randrange(2, 11)

        respuesta = int(input(f"¿Cuánto es {a} x {b}? "))

        if respuesta == a * b:
            print("¡Respuesta correcta!")
            correctas += 1
        else:
            print("¡Respuesta incorrecta!")
        print()
    print(f"Ha contestado correctamente {correctas} ", end="")
    if (correctas == 1):
        print("pregunta")
    else:
        print("preguntas")
    nota = round(correctas / cantidad * 10, 1)
    print(f"Le corresponde una nota de {nota}")
    if nota >= 9:
        print("¡Enhorabuena!")

B. Cálculo estimado

Bucle for (2) - B-1

Una posible solución es:

from random import randrange

a = randrange(11, 100)
b = randrange(11, 100)

respuesta = int(input(f"¿Cuánto es {a} x {b}? "))

if respuesta == a * b:
    print("¡Respuesta correcta!")
elif abs(respuesta - a*b)/(a*b) < 0.1:
    print(f"¡Ha fallado por menos del 10%! La respuesta correcta era {a * b}")
elif abs(respuesta - a*b)/(a*b) < 0.3:
    print(f"¡Ha fallado por menos del 30%! La respuesta correcta era {a * b}")
else:
    print(f"¡Ha fallado por más del 30%! La respuesta correcta era {a * b}")
print()

Bucle for (2) - B-2

Una posible solución es:

from random import randrange

cantidad = int(input("Número de preguntas: "))
print()

if cantidad < 1:
    print("El número de preguntas debe ser al menos 1")
else:
    for i in range(cantidad):
        a = randrange(11, 100)
        b = randrange(11, 100)

        respuesta = int(input(f"¿Cuánto es {a} x {b}? "))

        if respuesta == a * b:
            print("¡Respuesta correcta!")
        elif abs(respuesta - a*b)/(a*b) < 0.1:
            print(f"¡Ha fallado por menos del 10%! La respuesta correcta era {a * b}")
        elif abs(respuesta - a*b)/(a*b) < 0.3:
            print(f"¡Ha fallado por menos del 30%! La respuesta correcta era {a * b}")
        else:
            print(f"¡Ha fallado por más del 30%! La respuesta correcta era {a * b}")
        print()

Bucle for (2) - B-3

Una posible solución es:

from random import randrange

cantidad = int(input("Número de preguntas: "))
print()

if cantidad < 1:
    print("El número de preguntas debe ser al menos 1")
else:
    correctas = 0.0
    for i in range(cantidad):
        a = randrange(11, 100)
        b = randrange(11, 100)

        respuesta = int(input(f"¿Cuánto es {a} x {b}? "))

        if respuesta == a * b:
            print("¡Respuesta correcta!")
            correctas += 1
        elif abs(respuesta - a*b)/(a*b) < 0.1:
            print(f"¡Ha fallado por menos del 10%! La respuesta correcta era {a * b}")
            correctas += 0.66
        elif abs(respuesta - a*b)/(a*b) < 0.3:
            print(f"¡Ha fallado por menos del 30%! La respuesta correcta era {a * b}")
            correctas += 0.33
        else:
            print(f"¡Ha fallado por más del 30%! La respuesta correcta era {a * b}")
        print()

    nota = round(correctas / cantidad * 10, 1)
    print(f"Le corresponde una nota de {nota}")
    if nota >= 9:
        print("¡Enhorabuena!")