Este tutorial adapta pedagógicamente el Día 7. Todo el día es un solo proyecto, el Ahorcado, construido en 5 pasos. Cada paso se trata como un tema, con sus conceptos, errores frecuentes, retos y verificación. Las secciones 📝 Ejercicio original del curso corresponden a los TODO (tareas pendientes) del curso. Los retos 🟢🟡🟠🔴, el proyecto extra y el proyecto integrador son creaciones de esta adaptación. Las correcciones al material original aparecen como 🛠️ Nota técnica.
Tabla de contenidos
- Antes de empezar: un día para repasar construyendo
- Descomponer un problema complejo en un diagrama de flujo
- Paso 1: Palabra aleatoria y comprobación de la letra
- Paso 2: Reemplazar espacios en blanco por aciertos
- Paso 3: Repetir hasta ganar (
while, bandera yin) - Paso 4: Las vidas del jugador
- Paso 5: Módulos propios y experiencia de usuario
- 🚀 Proyecto del día: el Ahorcado completo (revisión, pruebas y depuración)
- 🌟 Proyecto extra: Mini-Wordle en consola
- 🏆 Proyecto integrador del Día 7: Ahorcado Temático con Niveles
- 🤖 Programar con apoyo de IA
- 🛠️ Correcciones técnicas al material original
- 📋 Matriz de trazabilidad
- 📦 Evidencias de aprendizaje del Día 7
0. Antes de empezar: un día para repasar construyendo
(Fuente: 052 - Day 7 Goals- what we will make by the end of the day.md, 059 - The Benefits of Daily Practice.md)
Hoy no hay conceptos nuevos importantes. Se repasa todo lo aprendido construyendo un juego completo: bucles for y while, if/else, listas, strings, range(), módulos, etc.
El juego: el computador elige una palabra secreta y la muestra como espacios en blanco (_ _ _ _ _). El jugador propone letras: si acierta, la letra aparece en su posición; si falla, pierde una vida y se va dibujando el ahorcado. Gana quien complete la palabra antes de perder las 6 vidas.
Mensaje de cierre del curso: no importa si un "día" del curso te toma dos o tres días reales. Lo importante es la práctica constante, sin dejar pasar mucho tiempo entre sesiones. La instructora cuenta que aprendió desarrollo para iOS mientras trabajaba como médica, después de turnos de noche.
Prerequisito general: Días 1 a 6.
1. Descomponer un problema complejo en un diagrama de flujo
(Fuente: 053 - How to break a Complex Problem down into a Flow Chart.md)
🎯 Objetivo de aprendizaje
- Descomponer un problema grande en pasos pequeños.
- Representar la lógica de un juego completo en un diagrama de flujo antes de programar.
📖 Explicación conceptual
Frente a un proyecto grande, el error más común es empezar a escribir código de inmediato. El curso propone primero entender el juego (jugarlo o leer sus reglas) y luego dibujar su lógica.
"No hay una única respuesta correcta." Hay muchos diagramas válidos. Este es el del curso:
flowchart TD
A([Inicio]) --> B[Elegir palabra al azar]
B --> C[Generar un espacio en blanco por cada letra]
C --> D[/El usuario adivina una letra/]
D --> E{¿La letra está en la palabra?}
E -- Sí --> F[Reemplazar los espacios por la letra]
F --> G{¿Quedan espacios en blanco?}
G -- Sí --> D
G -- No --> W([Fin: ¡GANASTE!])
E -- No --> H[Perder una vida]
H --> I{¿Quedan vidas?}
I -- Sí --> D
I -- No --> L([Fin: PERDISTE])📝 Ejercicio original del curso: tu propio diagrama
Enunciado: antes de ver el diagrama del curso, dibuja tu propio diagrama de flujo del Ahorcado, en papel o en draw.io (se abre en otra pestaña).
🔍 Antes de dibujar
- ¿Qué pasa primero, antes de que el usuario haga algo?
- ¿Qué ocurre cuando la letra es correcta? ¿Y cuando es incorrecta?
- ¿Cuándo termina el juego? (Hay dos formas de terminar.)
- ¿Qué parte del diagrama se repite? Esa será un bucle.
🧩 Comprueba lo aprendido: Tema 1
- Compara tu diagrama con el del curso: ¿qué pasos olvidaste o agregaste?
- Señala en el diagrama del curso qué rombos serán
ify qué flechas de regreso serán unwhile. - Reto de diseño: agrega al diagrama la situación "el usuario repite una letra que ya había dicho".
Evidencia: tu diagrama, con las diferencias frente al del curso marcadas.
2. Paso 1: Palabra aleatoria y comprobación de la letra
(Fuente: 054 - Step 1 - Picking a Random Words and Checking Answers.md)
Prerequisito:
random.choice(Día 4),for(Día 5),.lower()(Día 3).
🎯 Objetivo de aprendizaje
- Recorrer un string con
for, letra por letra, igual que una lista. - Normalizar la entrada con
.lower().
📖 Explicación conceptual
Un for también recorre strings:
for letra in "camello":
print(letra) # c, a, m, e, l, l, o (una por línea)¿Por qué .lower()? Las palabras de la lista están en minúsculas. Si el usuario escribe A, la comparación "A" == "a" da False. Convertir todo a minúsculas antes de comparar evita el problema.
💡 Consejo del curso sobre la organización: en PyCharm, View → Tool Windows → TODO muestra todas las tareas pendientes del archivo en orden. Y la guía PEP 8 pide que los
importvayan al inicio del archivo.
📝 Ejercicio original del curso: TODO del Paso 1
- Elegir al azar una palabra de
word_list, guardarla enchosen_worde imprimirla (solo para probar). - Pedir al usuario una letra, guardarla en
guessy convertirla a minúsculas. - Recorrer cada letra de
chosen_worde imprimir "Correcto" si coincide conguess, o "Incorrecto" si no.
Resultado esperado: con camello y la letra a → Incorrecto, Correcto, Incorrecto, Incorrecto, Incorrecto, Incorrecto, Incorrecto.
El código inicial del curso (con
word_list, por ejemplo["aardvark", "baboon", "camel"]) no está incluido entre los archivos suministrados. Crea tu propia lista, en español y en minúsculas.
🔍 Antes de programar
- ¿Qué función del Día 4 elige un elemento al azar de una lista?
- ¿Dónde aplicas
.lower(): al guardar la entrada o al comparar? - ¿Por qué se imprime la palabra elegida? ¿La dejarías en la versión final?
Retos adicionales (creados para esta adaptación)
- 🟢 Reto 1: en lugar de imprimir "Correcto" o "Incorrecto" por cada letra, muestra al final cuántas veces aparece la letra en la palabra.
- 🟡 Reto 2: muestra también las posiciones (índices) donde aparece la letra.
- 🟠 Reto 3: recorre la palabra y cuenta cuántas vocales tiene, usando
in "aeiou". - 🔴 Reto 4: ¿qué pasa si la lista de palabras incluye
"Árbol"(con mayúscula y tilde) y el usuario escribea? Analiza el problema y propón dos soluciones: una al elegir las palabras y otra en el código.
3. Paso 2: Reemplazar espacios en blanco por aciertos
(Fuente: 055 - Step 2 - Replacing Blanks with Guesses.md)
Prerequisito:
range()y acumuladores (Día 5), concatenación con+=(Días 1 y 2).
🎯 Objetivo de aprendizaje
- Construir un string carácter por carácter con un acumulador.
- Generar una "vista" de la palabra que muestre las letras acertadas y oculte las demás.
📖 Explicación conceptual
Espacios en blanco: un string vacío al que se le suma un _ por cada letra.
espacios = ""
for posicion in range(len(palabra)):
espacios += "_"El curso llega a esto por pasos: primero prueba con
range(1, 6)para una palabra de 5 letras, observa que el bucle se repite 5 veces y después generaliza con la longitud de la palabra. Probar con un valor fijo y luego generalizar es una buena estrategia.
La vista de la palabra (display): se recorre la palabra y, por cada letra, se agrega la letra si coincide con la adivinada, o un _ si no coincide.
| Letra de "camello" | ¿Es igual a "l"? | display va quedando |
|---|---|---|
| c | No | _ |
| a | No | __ |
| m | No | ___ |
| e | No | ____ |
| l | Sí | ____l |
| l | Sí | ____ll |
| o | No | ____ll_ |
📝 Ejercicio original del curso: TODO del Paso 2
- Crear un string vacío
placeholdery, con un bucle, agregarle un_por cada letra dechosen_word. Imprimirlo. - Crear
display: recorrer la palabra y poner la letra adivinada en sus posiciones y_en las demás. Imprimirlo.
Resultado esperado: palabra apple y letra p → _pp__.
⚠️ Errores frecuentes
- Desfase por uno con
range(1, len(palabra)): queda un espacio de menos. - Inicializar
display = ""fuera del bucle que recorre las letras: en este paso todavía no haywhile, pero en el Paso 3 esto importará mucho. - Espacios invisibles: si en lugar de
"_"escribes"_ ", la longitud cambia y las comprobaciones posteriores podrían fallar.
Retos adicionales (creados para esta adaptación)
- 🟢 Reto 1: muestra la vista con espacios entre los caracteres (
_ p p _ _) para que se lea mejor. (Pista: investiga" ".join(...)o agrega el espacio al acumular.) - 🟡 Reto 2: muestra también cuántas letras faltan por descubrir.
- 🟠 Reto 3: crea la vista con una lista en lugar de un string, y modifica solo las posiciones acertadas con índices (
lista[i] = letra). Compara las dos técnicas. - 🔴 Reto 4: si la palabra secreta fuera una frase con espacios (
"tienda escolar"), ¿cómo mostrarías el espacio real sin convertirlo en_?
4. Paso 3: Repetir hasta ganar (while, bandera y in)
(Fuente: 056 - Step 3 - Checking if the Player has Won.md)
Prerequisito:
while(Día 6), listas yappend(Día 4).
🎯 Objetivo de aprendizaje
- Controlar un bucle
whilecon una variable bandera (game_over). - Usar el operador
in/not inpara buscar dentro de strings y listas. - Conservar información entre vueltas del bucle.
📖 Explicación conceptual
Variable bandera. Una variable booleana que indica si el juego terminó:
game_over = False
while not game_over:
# ...jugar una ronda...
if "_" not in display:
game_over = True
print("¡Ganaste!")El operador in: pregunta si algo está contenido en otra cosa.
"_" in "c_mello" # True
"z" not in "camello" # True
"a" in ["a", "b"] # TrueCómo recordar las letras acertadas. El curso descubre un problema: en cada vuelta, display se reconstruye desde cero y las letras acertadas antes se pierden. La solución es una lista correct_letters creada fuera del while, a la que se agrega cada acierto. Al construir display hay un tercer caso:
| Condición, para cada letra de la palabra | Se agrega a display |
|---|---|
| La letra es igual a la adivinada en esta ronda | La letra (y se guarda en correct_letters) |
La letra ya está en correct_letters |
La letra |
| Ninguna de las anteriores | _ |
¿Por qué
correct_lettersva FUERA delwhile? Si se crea dentro,correct_letters = []la vaciaría en cada vuelta. Es el mismo error del "acumulador reiniciado" del Día 5.
🛠️ Nota técnica: la transcripción llama a
in"una función". Es un operador de pertenencia: no lleva paréntesis y se escribe entre dos valores.
📝 Ejercicio original del curso: TODO del Paso 3
- Usar un
whilepara que el usuario pueda seguir adivinando. El juego termina cuando ya no quedan_endisplay, y entonces se imprime "Ganaste". - Modificar el bucle
forpara conservar endisplaylas letras acertadas en rondas anteriores.
🔍 Antes de programar
- ¿Qué líneas del Paso 2 deben quedar dentro del
while? ¿Cuáles fuera? - ¿Cuál es la condición exacta de victoria?
- Consejo del curso: intenta resolverlo solo durante 10 a 20 minutos antes de ver la solución. "Sin la fase de pensamiento, no estamos aprendiendo."
⚠️ Errores frecuentes
- Bucle infinito: olvidar
game_over = True. - Lista reiniciada:
correct_letters = []dentro delwhile. - Sangría: que el
if "_" not in displayquede fuera delwhile(y nunca se revise) o dentro delfor(y se revise demasiado pronto).
Retos adicionales (creados para esta adaptación)
- 🟢 Reto 1: cuenta cuántos intentos le tomó al usuario ganar y muéstralo al final.
- 🟡 Reto 2: sin usar
in, escribe tu propio bucle que determine si"_"está endisplay. - 🟠 Reto 3: muestra en cada ronda la lista de letras ya acertadas, ordenada. (Investiga
sorted().) - 🔴 Reto 4: diseña una versión del juego sin la lista
correct_letters, que mantengadisplaycomo una lista y solo cambie las posiciones acertadas. ¿Cuál diseño te parece más simple?
5. Paso 4: Las vidas del jugador
(Fuente: 057 - Step 4 - Keeping Track of the Player's Lives.md)
🎯 Objetivo de aprendizaje
- Llevar un contador de vidas que termina el juego al llegar a 0.
- Usar el contador como índice de una lista de imágenes.
- Separar la lógica en condiciones independientes para facilitar la depuración.
📖 Explicación conceptual
lives = 6antes del bucle.- Si la letra no está en la palabra:
lives -= 1. Silives == 0,game_over = Truey "Perdiste". - El curso escribe esta comprobación como un
if guess not in chosen_word:aparte delfor, en lugar de mezclarla con elif/elif/elseque construyedisplay. Lógica separada = código más fácil de depurar. - La lista
stagescontiene 7 dibujos ASCII, ordenados para questages[lives]muestre el dibujo correcto:stages[6]es la horca vacía ystages[0]el ahorcado completo.
print(stages[lives]) # dentro del while, en cada rondaOtra vez aparece la idea del Día 4: ordenar una lista para que coincida con un número evita escribir muchos
if.
📝 Ejercicio original del curso: TODO del Paso 4
- Crear
livescon valor 6. - Si
guessno está enchosen_word, restar una vida. Si llega a 0, terminar el juego con "Perdiste". - Imprimir el dibujo de
stagesque corresponde a las vidas restantes.
La lista
stagescon el arte ASCII viene en el archivo inicial del curso, que no está incluido entre los materiales suministrados. Puedes dibujar tus propias 7 etapas.
⚠️ Errores frecuentes
- Orden invertido de las etapas: si
stages[0]fuera la horca vacía, el dibujo avanzaría al revés. Imprimestages[0]ystages[6]para verificar. - Restar la vida dentro del
for: se restaría una vida por cada letra de la palabra que no coincide. ¡Perderías todas las vidas en un solo intento!
Retos adicionales (creados para esta adaptación)
- 🟢 Reto 1: cambia el número de vidas a 8 y ajusta los dibujos. ¿Qué otras partes del código hay que cambiar?
- 🟡 Reto 2: muestra las letras falladas en cada ronda.
- 🟠 Reto 3: en vez de dibujos, muestra una barra de vidas con emojis:
❤️❤️❤️🖤🖤🖤. (Pista:"❤️" * lives.) - 🔴 Reto 4: ¿qué pasa si el jugador repite una letra incorrecta? Pruébalo. Con la lógica del curso, repetir
ztres veces cuesta 3 vidas. ¿Es justo? Diseña la corrección (ver Paso 5).
6. Paso 5: Módulos propios y experiencia de usuario
(Fuente: 058 - Step 5 - Improving the User Experience.md)
Prerequisito: módulos propios (Día 4, Tema 1).
🎯 Objetivo de aprendizaje
- Organizar el programa en varios archivos (módulos) y usar
importyfrom ... import .... - Mejorar la experiencia de usuario (UX) con mensajes claros.
📖 Explicación conceptual
Dos formas de importar:
import hangman_words
palabra = random.choice(hangman_words.word_list) # nombre_del_módulo.cosa
from hangman_art import stages, logo # importar cosas específicas
print(logo) # se usan sin el prefijo| Forma | Ventaja | Cuándo conviene |
|---|---|---|
import modulo |
Queda claro de dónde viene cada cosa | En la mayoría de los casos, sobre todo si usas muchas cosas del módulo |
from modulo import a, b |
Código más corto | Cuando solo usas una o dos cosas |
Experiencia de usuario (UX). El curso insiste en dar retroalimentación: el jugador debe saber siempre qué pasó y cómo va.
- "Ya adivinaste la letra r" (sin quitar una vida).
- "Adivinaste d, esa letra no está en la palabra. Pierdes una vida."
- "Te quedan 4/6 vidas."
- Al perder, revelar la palabra: "La palabra era: camello". El curso dice: "Nunca es bueno frustrar demasiado a los usuarios."
📝 Ejercicio original del curso: TODO del Paso 5
- Importar
word_listdesdehangman_words.py. - Importar
stagesdesdehangman_art.py. - Importar e imprimir
logoal inicio. - Si el usuario repite una letra ya acertada, avisarle sin restar vidas.
- Si la letra no está en la palabra, decírselo.
- Mostrar las vidas restantes en formato "X/6".
- Al perder, mostrar la palabra correcta.
Los archivos
hangman_words.pyyhangman_art.pydel curso no están incluidos entre los materiales suministrados: créalos tú. Esto es parte de la práctica con módulos.
🛠️ Nota técnica: la comprobación del curso ("¿la letra ya está en
correct_letters?") solo detecta letras acertadas repetidas. Una letra incorrecta repetida sigue quitando vidas (lo comprobamos: repetirztres veces cuesta 3 vidas). Mejora propuesta: guarda todas las letras intentadas en una listaletras_intentadasy revísala antes de cualquier otra cosa.
🛠️ Nota técnica: si el usuario presiona Enter sin escribir nada,
guesses"", y"" in "camello"esTrue(el string vacío "está" en cualquier string). El intento vacío no cuesta vidas y el juego no avisa nada. Mejora propuesta: valida que la entrada sea exactamente una letra, conlen(guess) == 1yguess.isalpha().
7. 🚀 Proyecto del día: el Ahorcado completo
(Fuente: pasos 1 a 5, archivos 054–058, proyecto oficial del curso original)
Requisitos funcionales (versión final del curso)
- Mostrar el logo al inicio.
- Elegir una palabra al azar de un módulo aparte.
- Mostrar los espacios en blanco y pedir letras hasta ganar o perder.
- Mostrar la palabra parcialmente descubierta, conservando los aciertos anteriores.
- Controlar 6 vidas, mostrar el dibujo que corresponde y "X/6 vidas restantes".
- Retroalimentación: letra repetida, letra incorrecta, victoria y derrota revelando la palabra.
Pruebas
(Para probar, fija temporalmente chosen_word = "camello". Recuerda quitarlo al final.)
| Secuencia de letras | Resultado esperado |
|---|---|
| c, A, m, e, l, o | Gana con 6 vidas (la A mayúscula funciona gracias a .lower()) |
| z, x, q, w, v, u | Pierde; se muestra la palabra |
| c, c | Aviso "ya adivinaste c" sin perder una vida |
| l | Aparecen las dos l en display |
| z, z | Versión del curso: pierde 2 vidas. Versión mejorada: pierde 1 vida y recibe un aviso |
| (Enter vacío) | Versión mejorada: mensaje "escribe una letra" |
🧪 Prueba y depuración
Este fragmento tiene cuatro errores. Encuéntralos usando la tabla de pruebas:
lives = 6
game_over = False
while not game_over:
correct_letters = []
guess = input("Adivina una letra: ").lower()
display = ""
for letter in chosen_word:
if letter == guess:
display += letter
correct_letters.append(letter)
elif letter in correct_letters:
display += letter
else:
display += "_"
lives -= 1
if "_" not in display:
game_over = True
print("¡Ganaste!")
if lives == 0:
print("Perdiste")
print(stages[lives])(Pistas: una lista que se reinicia, vidas que se restan donde no deben, un juego que no termina al perder y un posible IndexError.)
⭐ Extensión del proyecto
- Mostrar las letras ya intentadas, ordenadas.
- Dar una pista (revelar una letra) a cambio de una vida.
- Preguntar "¿Jugar otra vez?" al terminar, usando otro
whileque envuelva todo el juego.
8. 🌟 Proyecto extra: Mini-Wordle en consola
Situación
Construir una versión de consola de un juego en el que hay que adivinar una palabra de 5 letras en 6 intentos. Después de cada intento, el juego da pistas por posición:
| Símbolo | Significado |
|---|---|
| 🟩 | La letra está en la palabra y en esa posición |
| 🟨 | La letra está en la palabra, pero en otra posición |
| ⬜ | La letra no está en la palabra |
Requisitos
- Lista de palabras de 5 letras, en español, sin tildes y en minúsculas.
- Validar que el intento tenga exactamente 5 letras. Si no, avisar sin gastar un intento.
- Por cada intento, recorrer las posiciones con
for i in range(5)y construir la línea de pistas. - Ganar si todas las pistas son 🟩. Perder después de 6 intentos, revelando la palabra.
Casos de prueba (palabra secreta: perro)
| Intento | Pistas esperadas (versión simple) |
|---|---|
perro |
🟩🟩🟩🟩🟩 |
pardo |
🟩⬜🟩⬜🟩 |
ropas |
🟨🟨🟨⬜⬜ |
💡 Diferencia con el Ahorcado: aquí importa la posición (índices), no solo la pertenencia (
in). Discute: en la versión simple, ¿qué pasa con las letras repetidas? Por ejemplo, con el intentoerrory la palabraperro. ¿Cómo lo resolvería el juego original?
⭐ Extensión
Muestra un "teclado" con las letras ya descartadas.
9. 🏆 Proyecto integrador del Día 7: Ahorcado Temático con Niveles
Proyecto integrador creado para esta adaptación. Integra listas anidadas (Día 4),
foryrange(Día 5), funciones ywhile(Día 6), módulos y todo el Ahorcado.
Situación problema
La profesora de Ciencias Naturales quiere usar el Ahorcado para repasar vocabulario de varias materias, con distintos niveles de dificultad.
Pregunta orientadora
¿Cómo convertir un juego que ya funciona en una herramienta configurable sin reescribirlo desde cero?
Requerimientos
- Un módulo
palabras.pycon una lista anidada de categorías, por ejemplo:[["ciencias", "celula", "atomo", ...], ["matematicas", "fraccion", ...], ...]. El primer elemento de cada sublista es el nombre de la categoría. - Un menú que muestre las categorías numeradas (con un
for) y permita elegir una. - Elegir la dificultad: fácil (8 vidas), normal (6) o difícil (4). La cantidad de vidas depende del nivel, así que no puedes usar
stages[lives]directamente: diseña otra forma de mostrar el progreso. - Toda la lógica del Ahorcado, con las dos mejoras del Paso 5: letras intentadas y validación de la entrada.
- Puntaje: 10 puntos por letra acertada, más un bonus por las vidas restantes al ganar.
- Al terminar, preguntar "¿Jugar otra vez? (s/n)" y acumular el puntaje entre partidas.
- Funciones sin parámetros para mostrar el logo, las instrucciones y la despedida.
Etapas
- Módulo de palabras y menú de categorías.
- Niveles y barra de vidas.
- Integrar el juego, con sus mejoras.
- Puntaje.
- Bucle "jugar otra vez".
Entregables
Código en al menos 2 archivos (principal y palabras.py), diagrama de flujo actualizado y tabla de pruebas.
Criterios técnicos
- Ningún
IndexErrorcon entradas inválidas en los menús. - Las letras repetidas nunca restan vidas.
- El puntaje se acumula correctamente entre partidas.
Posibles extensiones
- Guardar el mejor puntaje de la sesión.
- Mostrar una definición de la palabra al terminar (requiere una lista paralela de definiciones).
10. 🤖 Programar con apoyo de IA
El curso insiste en no mirar la solución antes de intentarlo: "sin la fase de pensamiento, solo estamos repitiendo el pensamiento de otra persona". Con una IA pasa lo mismo: si le pides el Ahorcado completo, obtienes código, pero no aprendes a construirlo.
Uso recomendado para este proyecto:
- Diseña tu diagrama sin IA.
- Programa cada paso tú mismo.
- Usa la IA como revisora: "¿Qué casos límite no estoy considerando en este código?".
- Verifica cada caso que te sugiera ejecutándolo. ¿Menciona la letra repetida incorrecta? ¿Y la entrada vacía?
11. 🛠️ Correcciones técnicas al material original
| Archivo | Afirmación o comportamiento del curso | Observación | Tratamiento |
|---|---|---|---|
056 |
in se describe como "función" |
Es un operador de pertenencia | Nota técnica, Paso 3 |
058 |
La comprobación de "letra ya adivinada" usa correct_letters |
Las letras incorrectas repetidas siguen restando vidas (verificado) | Nota técnica y Reto 4 del Paso 4 |
058 |
No hay validación de la entrada | "" cuenta como letra correcta ("" in palabra es True); "ab" resta una vida |
Nota técnica y pruebas del proyecto |
054–058 |
Archivos iniciales con word_list, stages, logo y los módulos |
No están incluidos entre los materiales suministrados | Se pide crearlos |
054 |
La palabra elegida se imprime | Sirve para probar, pero debe eliminarse en la versión final | Nota en las pruebas |
12. 📋 Matriz de trazabilidad
| Contenido original | Archivo de origen | Concepto desarrollado | Ejercicio original | Reto adicional | Proyecto relacionado |
|---|---|---|---|---|---|
| Objetivos: el Ahorcado | 052 |
Sección 0 | — | — | Sección 7 |
| Descomposición y diagrama de flujo | 053 |
Tema 1 | Crear tu propio diagrama | Reto de diseño: letra repetida | Secciones 7 y 9 |
random.choice, for sobre strings, .lower() |
054 |
Tema 2 | TODO 1–3 del Paso 1 | Retos 1–4 del Paso 1 | Sección 7 |
Espacios en blanco, display |
055 |
Tema 3 | TODO 1–2 del Paso 2 | Retos 1–4 del Paso 2 | Secciones 7 y 8 |
while, bandera, in, correct_letters |
056 |
Tema 4 | TODO 1–2 del Paso 3 | Retos 1–4 del Paso 3 | Secciones 7 y 9 |
Vidas, stages[lives] |
057 |
Tema 5 | TODO 1–3 del Paso 4 | Retos 1–4 del Paso 4 | Secciones 7 y 9 |
Módulos, from ... import, UX |
058 |
Tema 6 | TODO 1–7 del Paso 5 | Mejoras: letras intentadas y validación | Secciones 7 y 9 |
| Práctica diaria | 059 |
Sección 0 | — | — | — |
| (No existe en el curso original) | — | — | — | Mini-Wordle | Sección 8 |
| (No existe en el curso original) | — | — | — | Ahorcado Temático con Niveles | Sección 9 |
13. 📦 Evidencias de aprendizaje del Día 7
- Diagrama de flujo propio del Ahorcado.
- Ahorcado completo en varios archivos (módulos), con la tabla de pruebas.
- Ejercicio de depuración resuelto: los 4 errores encontrados y explicados.
- Uno de los proyectos adicionales: Mini-Wordle o el Ahorcado Temático.
- Cuaderno de errores: lista reiniciada dentro de un bucle, vidas restadas dentro del
for,IndexErrorenstagesy la entrada vacía.