"""
Project: Write Your Own Multiplication Quiz
Page 199
"""

import time
import random


def create_problem():
    first = random.randrange(0, 10)
    last = random.randrange(0, 10)
    return first, last, str(first * last)


def ask(index, total, waiting, tries, a, b, result, ini):
    response = input(f"[{index}/{questions}] ¿Cuánto es {a} × {b}?:\n").strip()
    if result == response:
        fin = time.time() - ini
        if fin > waiting:
            print("Respuesta correcta pero fuera del límite de tiempo :/")
        else:
            print("¡Correcto!")
            total += 1
    else:
        tries -= 1
        if tries == 0:
            print(f"¡Incorrecto! La respuesta es '{result}'.")
        else:
            print(f"Te quedan {tries} oportunidades.")
            total = ask(index, total, waiting, tries, a, b, result, ini)
    return total


total, questions, waiting, tries = 0, 10, 8, 3
print(f"Quiz: tienes {waiting}s para contestar cada pregunta")
for i in range(questions):
    a, b, result = create_problem()
    ini = time.time()
    total = ask(i + 1, total, waiting, tries, a, b, result, ini)
    time.sleep(1)
print(f"Calificación total: {total}/{questions}")
