Enunciado: Crea un programa que use as librerías random e time para simular un concurso onde resólvese unha operación matemática aleatoria e cronométrase o tempo de resposta.
Autoavaliación: Programa un concurso con librerías
Paso 1: Importar as librerías
- Duración:
- 5 min
- Agrupamento:
- Individual
Enunciado: Importa as librerías necesarias (random e time) para usar as súas funcionalidades.
Código Python: Importar librerías
import random # Para xerar elementos aleatorios import time # Para medir o tempo de execución
- random: Permite xerar operacións e números aleatorios.
- time: Para medir o tempo de resposta.
Paso 2: Xerar unha operación matemática aleatoria con 2 números tamén aleatorios
- Duración:
- 15 min
- Agrupamento:
- Individual
Enunciado: Usa a librería random para xerar dous números aleatorios entre 1 e 10 e unha operación matemática aleatoria entre suma, resta ou multiplicación.
Código Python: Números e operacións aleatorias
# Xerar dous números aleatorios entre 1 e 10
num1 = random.randint(1, 10)
num2 = random.randint(1, 10)
# Escoller unha operación aleatoria
operacion = random.choice(["+", "-", "*"])
# Mostrar a operación
print(f"Resolve esta operación: {num1} {operacion} {num2}")
- random.randint(1, 10): Xera un número enteiro entre 1 e 10.Podes varialo para facelo máis complexo.
- random.choice(["+", "-", "*"]): Escolle aleatoriamente unha operación matemática.
Paso 3: Medir o tempo de resposta
- Duración:
- 15 min
- Agrupamento:
- Individual
Enunciado: Usa a librería time para medir o tempo que tarda a usuaria en responder á pregunta.
Código Python: Medir o tempo de resposta
# Medir o inicio do tempo
inicio = time.time()
# Pedir a resposta á usuaria
resposta = float(input("Escribe a túa resposta: "))
# Medir o final do tempo
fin = time.time()
# Mostrar o tempo de resposta
print("Tempo de resposta:", fin - inicio, "segundos.")
- time.time(): Obtén o tempo cando se fai a pregunta e cando a usuaria responde, en segundos .
- Restando o tempo inicial do final, podemos calcular o tempo de resposta.
Paso 4: Calcular o resultado correcto
- Duración:
- 20 min
- Agrupamento:
- Individual
Enunciado: Usa unha estrutura de condicións para calcular o resultado correcto da operación matemática segundo a operación escollida. Gárdao na variable correcto .
Código Python: Programa para calcular o resultado
# Calcular o resultado correcto segundo a operación
if operacion == "+":
correcto = num1 + num2
elif operacion == "-":
correcto = num1 - num2
elif operacion == "*":
correcto = num1 * num2
# Mostrar o resultado correcto
print("O resultado correcto é:", correcto)
- Usamos condicións if, elif para identificar a operación matemática e realizar o cálculo correspondente
- Gardámolo en correcto
Paso 5: Verificar a resposta da usuaria
- Duración:
- 10 min
- Agrupamento:
- Individual
Enunciado: Compara a resposta introducida pola usuaria co resultado correcto e mostra se é correcto ou incorrecto. Se é incorrecto, debe indicarlle a resposta correcta.
Código Python: Comprobar resposta da usuaria
if resposta == correcto:
print("¡Resposta correcta!")
else:
print(f"Resposta incorrecta. O resultado correcto era: {correcto}")
- Comparación directa entre a resposta e o resultado correcto na condición dun if
- Se coinciden, móstrase unha mensaxe de éxito; se non, indícase a resposta correcta.
Paso 6: Combinar todo nun programa final
- Duración:
- 15 min
- Agrupamento:
- 2
Basándovos nos vosos programas previos, creade un programa que xestione o concurso:
- Dádelle a benvida ó concurso
- Indicádelle a operación a realizar
- Medide o tempo de resposta.
- Indicádelle se acerou ou non
- Ademais, indicádelle canto tardou en responder
Con listas sen comprobar se o elemento que queremos engadir, xa está nela.Se introducides 2 veces mazá, aparecerá 2 veces na lista.
Código Python: Programa concurso
import random
import time
print("Benvida ao concurso de matemáticas!")
# Xerar unha operación aleatoria
num1 = random.randint(1, 10)
num2 = random.randint(1, 10)
operacion = random.choice(["+", "-", "*"])
print(f"Resolve esta operación: {num1} {operacion} {num2}")
# Medir o tempo de resposta
inicio = time.time()
resposta = float(input("Escribe a túa resposta: "))
fin = time.time()
# Calcular o resultado correcto
if operacion == "+":
correcto = num1 + num2
elif operacion == "-":
correcto = num1 - num2
elif operacion == "*":
correcto = num1 * num2
# Mostrar se a resposta é correcta
if resposta == correcto:
print("¡Resposta correcta!")
else:
print(f"Resposta incorrecta. O resultado correcto era: {correcto}")
print("Tempo de resposta:", fin - inicio, "segundos.")
Ampliación: E se facemos un ranking do concurso?
- Duración:
- 20 min
- Agrupamento:
- 2
Mellora o programa do concurso:
- O programa execútase en bucle, e de cada execución, pregunta se queres volver xogar ou sair
- O programa debe rexistrar o nome das persoas que acerten e o tempo que tardaron en responder nunha lista de 5 dicionarios mellores = []
- Cando acerten, debe preguntarlles o nome e rexistralo nun dicionario coas claves nome e tempo: participante = {"nome": nome, "tempo": tempo}
- Despós engadir ese dicionario desa participante á lista con mellores.append(participante)
- Agora o programa debe ordenar a lista coa clave do tempo:
- # Definir unha función que obteña o valor da clave "tempo"
def obter_tempo(participante):
return participante["tempo"] - # Usar sorted() coa función definida como criterio de ordenación
mellores = sorted(mellores, key=obter_tempo)
- # Definir unha función que obteña o valor da clave "tempo"
- Se hai máis de 5 participantes na lista de mellores, elimina o último if len(mellores) > 5: mellores.pop()
- Ao darlle a sair e rematar, mostrará os nomes e os tempos dos 5 participantes máis rápidos con for participante in mellores:
print(f"{participante['nome']} - Tempo: {participante['tempo']:.2f} segundos.") que indica só 2 decimais nos segundos de saída con .2f
Código Python: Concurso con ranking
import random
import time
# Lista ordenada de mellores participantes, inicializada baleira
mellores = []
print("Benvida ao concurso de matemáticas!")
print("Resolve as operacións e trata de ser o máis rápida!")
while True:
# Xerar unha operación aleatoria
num1 = random.randint(1, 10)
num2 = random.randint(1, 10)
operacion = random.choice(["+", "-", "*"])
print(f"Resolve esta operación: {num1} {operacion} {num2}")
# Medir o tempo de resposta
inicio = time.time()
resposta = float(input("Escribe a túa resposta: "))
fin = time.time()
# Calcular o resultado correcto
if operacion == "+":
correcto = num1 + num2
elif operacion == "-":
correcto = num1 - num2
elif operacion == "*":
correcto = num1 * num2
# Comprobar se acertou
if resposta == correcto:
tempo = fin - inicio
print("¡Resposta correcta!")
nome = input("Escribe o teu nome: ") # Pedir o nome só se acertou
# Crear o dicionario para este participante
participante = {"nome": nome, "tempo": tempo}
# Engadir o participante á lista
mellores.append(participante)
# Ordenar a lista segundo o tempo e asegurarnos que só hai 5 participantes na lista
# 1-Definir unha función que obteña o valor da clave "tempo"
def obter_tempo(participante):
return participante["tempo"]
# 2-Usar sorted() con a función definida como criterio de ordenación
mellores = sorted(mellores, key=obter_tempo)
# 3-Manter só os 5 mellores participantes
if len(mellores) > 5:
mellores.pop()
print("\nLista de mellores participantes:")
for participante in mellores:
print(f"{participante['nome']} - Tempo: {participante['tempo']:.2f} segundos.")
else:
print(f"Resposta incorrecta. O resultado correcto era: {correcto}")
# Preguntar se queren seguir xogando
continuar = input("\nQueres seguir xogando? (si/non): ").lower()
if continuar != "si":
print("Programa finalizado. Grazas por participar!")
break
print("\n--- Resultados finais ---")
print("Os 5 mellores participantes foron:")
for participante in mellores:
print(f"{participante['nome']} - Tempo: {participante['tempo']:.2f} segundos.")
Explicación:
Lista de mellores participantes:
A lista mellores = [] contén ata 5 dicionarios. Cada dicionario ten as claves:
- "nome": O nome da participante.
- "tempo": O tempo que tardou en responder correctamente.
Actualizar a lista de mellores:
- Engadimos o nome das que acertan e o tempo á lista mellores.
- participante = {"nome": nome, "tempo": tempo}
- mellores.append(participante)
- Ordenamos a lista co método sorted(), utilizando como clave o tempo.
- Obtemos o tempo de cada participante coa función def obter_tempo(participante): return participante["tempo"]
- mellores = sorted(mellores, key=obter_tempo)
- Limitamos a lista a 5 participantes eliminando o último con pop() se hai máis de 5 rexistros.
Interacción coa usuaria:
- O programa está nun bucle while que permite seguir xogando ou rematar tras cada partida.
- Se a usuaria elixe parar, móstranse os resultados finais coas 5 mellores participantes.
Licenciado baixo a Licenza Creative Commons Atribución Compartir igual 4.0