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 la siguiente:

import random


def main():
    print("TABLAS DE MULTIPLICAR (1)")

    a = random.randrange(2, 11)
    b = random.randrange(2, 11)
    respuesta = int(input(f"¿Cuánto es {a} x {b}? "))

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


if __name__ == "__main__":
    main()

Bucle for (2) - A-2

Una posible solución es la siguiente:

import random


def main():
    print("TABLAS DE MULTIPLICAR (2)")
    preguntas = int(input("Número de preguntas: "))
    if preguntas < 1:
        print("El número de preguntas debe ser al menos 1.")
    else:
        for _ in range(preguntas):
            print()
            a = random.randrange(2, 11)
            b = random.randrange(2, 11)
            respuesta = int(input(f"¿Cuánto es {a} x {b}? "))

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


if __name__ == "__main__":
    main()

Bucle for (2) - A-3

Una posible solución es la siguiente:

import random


def main():
    print("TABLAS DE MULTIPLICAR (3)")
    preguntas = int(input("Número de preguntas: "))
    if preguntas < 1:
        print("El número de preguntas debe ser al menos 1.")
    else:
        correctas = 0
        for _ in range(preguntas):
            print()
            a = random.randrange(2, 11)
            b = random.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()
        if correctas == 1:
            print(f"Ha contestado correctamente 1 pregunta.")
        else:
            print(f"Ha contestado correctamente {correctas} preguntas.")
        nota = round(correctas / preguntas * 10, 1)
        print(f"Le corresponde una nota de {nota}.")
        if nota >= 9:
            print("¡Enhorabuena!")


if __name__ == "__main__":
    main()

B. Cálculo estimado

Bucle for (2) - B-1

Una posible solución es la siguiente:

import random


def main():
    print("CÁLCULO ESTIMADO (1)")
    a = random.randrange(11, 100)
    b = random.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}.")

if __name__ == "__main__":
    main()

Bucle for (2) - B-2

Una posible solución es la siguiente:

import random


def main():
    print("CÁLCULO ESTIMADO (2)")
    cantidad = int(input("Número de preguntas: "))

    if cantidad < 1:
        print("El número de preguntas debe ser al menos 1.")
    else:
        for _ in range(cantidad):
            a = random.randrange(11, 100)
            b = random.randrange(11, 100)
            print()
            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}.")

if __name__ == "__main__":
    main()

Bucle for (2) - B-3

Una posible solución es la siguiente:

import random


def main():
    print("CÁLCULO ESTIMADO (3)")
    cantidad = int(input("Número de preguntas: "))

    if cantidad < 1:
        print("El número de preguntas debe ser al menos 1.")
    else:
        correctas = 0.0
        for _ in range(cantidad):
            a = random.randrange(11, 100)
            b = random.randrange(11, 100)
            print()
            respuesta = int(input(f"¿Cuánto es {a} x {b}? "))
            if respuesta == a * b:
                print("¡Respuesta correcta!")
                correctas += 10
            elif abs(respuesta - a*b)/(a*b) < 0.1:
                print(f"¡Ha fallado por menos del 10%! La respuesta correcta era {a * b}.")
                correctas += 6.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 += 3.33
            else:
                print(f"¡Ha fallado por más del 30%! La respuesta correcta era {a * b}.")

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

if __name__ == "__main__":
    main()