Semana 5 de 8
Bucles
En lugar de copiar una línea una y otra vez, los estudiantes hacen que el programa se repita. Usando un bucle while, construyen un juego de Adivina el Número que sigue preguntando hasta que el jugador gana, dando pistas de demasiado alto y demasiado bajo en el camino. Por ahora el secreto es fijo; en la Semana 7 se vuelve aleatorio.
- Tiempo estimado
- 60 minutos
- Proyecto
- Juego de adivinar el número
La idea
Un bucle repite código para que no tengas que escribirlo cien veces. Un bucle while sigue mientras su condición sea verdadera: perfecto para un juego que debe seguir preguntando hasta que el jugador gane. Algo dentro del bucle tiene que volver falsa la condición en algún momento, o se ejecuta para siempre. Como input() devuelve texto, usamos int() para convertir el intento en un número que podamos comparar.
Lo que vas a aprender
- Usar un bucle while para repetir líneas hasta que algo cambie.
- Darle al jugador tantos intentos como necesite con un bucle.
- Combinar un bucle con un if para reaccionar a cada intento.
- Encontrar y arreglar un bucle que nunca se detiene.
Palabras nuevas
- bucle
- Código que se repite en lugar de ejecutarse una sola vez.
- while
- Repite las líneas de abajo mientras su condición se mantenga verdadera.
- int()
- Convierte texto escrito como "7" en el número 7 para que puedas compararlo.
- bucle infinito
- Un bucle que nunca se detiene porque su condición nunca se vuelve falsa.
Proyecto: Juego de adivinar el número
Edita el código inicial de abajo y presiona Ejecutar para verlo funcionar. Usa Restablecer código inicial para volver al original cuando quieras.
Ejecuta tu programa para ver la salida.
Resultado esperado
Adivina un número del 1 al 10: 4
Muy bajo.
Adivina un número del 1 al 10: 9
Muy alto.
Adivina un número del 1 al 10: 7
¡Lo lograste!Mini desafío
Agrega un contador de intentos: empieza con intentos = 0, súmale 1 dentro del bucle, y después del bucle imprime cuántos intentos tomó.
Desafío de depuración
Este juego nunca termina, ni siquiera cuando el jugador escribe 7. El secreto es el número 7, pero input() devuelve el texto "7". ¿Por qué no son iguales, y qué convierte texto en número?
Código con errores
secreto = 7
intento = 0
while intento != secreto:
intento = input("Adivina un número del 1 al 10: ")Ver soluciónOcultar solución
Convierte el texto escrito en número con int():
intento = int(input("Adivina un número del 1 al 10: "))Desafío de extensión
Cambia el rango a 1 a 100 y dale al jugador solo 7 intentos. Detén el bucle e imprime ¡Se acabaron los intentos! si se le agotan.
Reflexiona
Un bucle te dejó preguntar una y otra vez sin repetirte. ¿Qué parte de tu juego final podría necesitar repetirse: los turnos, las preguntas, las rondas?
Notas para docentes
El momento clave es el bucle infinito: algo dentro del bucle debe cambiar la variable que revisa la condición, o nunca termina. Presenta int() solo hasta donde haga falta para comparar números. Deja el secreto fijo esta semana para que los estudiantes puedan predecir y comprobar el comportamiento; el azar llega en la Semana 7.
¿Vas a dirigir esta lección? Consulta la guía para docentes y bibliotecarios para saber cómo darla, los errores más comunes y una actividad de respaldo sin computadora.
¿Terminaste esta lección? Márcala como completada para desbloquear la siguiente semana.