{"id":636,"date":"2025-08-26T15:51:58","date_gmt":"2025-08-26T15:51:58","guid":{"rendered":"https:\/\/hmoweb.net\/Python\/?p=636"},"modified":"2025-08-30T17:37:46","modified_gmt":"2025-08-30T17:37:46","slug":"proyecto-5-el-ahorcado","status":"publish","type":"post","link":"https:\/\/hmoweb.net\/Python\/2025\/08\/26\/proyecto-5-el-ahorcado\/","title":{"rendered":"Proyecto 5 El Ahorcado"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Es recomendable que este ejercicio lo escribas (trata de no copiarlo) y lo revises para ver que se obtiene el resultado esperado. Si tiene alguna duda utiliza el debugger para ejecutar el programa paso por paso. Si estas siguiendo el video, este ejercicio lo encontraras en el minuto [1:15:19]<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&quot;&quot;&quot;\nProyecto 5 El Ahorcado\n26\/08\/2025\nEdito AHR\n&quot;&quot;&quot;\nimport random  # Se debe dejar un espacio entre lineas import\n\nimport string  # Se debe dejar un espacio entre lineas import\n\nfrom palabras_ import palabras  # Se debe dejar un espacios entre import&#039;s\n\nfrom ahorcado_diagramas import vidas_diccionario_visual  # Se debe dejar dos espacios entre import y el resto del codigo\n\n\ndef obtener_palabra_validas(palabras):\n    # Seleccionar una palabra al azar de la lista\n    # de palabras v\u00e1lidas.\n    palabra = random.choice(palabras)  # Selecciona una palabra al azar de la lista\n    \n    while &#039;-&#039; in palabra or &#039; &#039; in palabra:\n        palabra = random.choice(palabras)\n\n    return palabra.upper()\n\n\ndef ahorcado():\n    print(&quot;**********************************&quot;)\n    print(&quot;\u00a1Bienvenido al juego del Ahorcado!&quot;)\n    print(&quot;**********************************&quot;)\n    \n    palabra = obtener_palabra_validas(palabras)\n    \n    letras_por_adivinar = set(palabra)  # palabra = &#039;Python&#039;, set(Python) = {&#039;P&#039;, &#039;y&#039;, &#039;t&#039;, &#039;h&#039;, &#039;o&#039;, &#039;n&#039;}, si ubiera una letra repetida se omiten las repeticiones\n    letras_adivinadas = set()  # La funcion set() crea un &#039;conjunto&#039; vacio\n    abecedario = set(string.ascii_uppercase)  # No contiene la \u00d1, podria a\u00f1adirse al conjunto la \u00d1, en el ejemplo no hay palabras con &#039;\u00f1&#039;\n    \n    vidas = 7\n    \n    while len(letras_por_adivinar) &gt; 0 and vidas &gt; 0:\n        # Letras adivinadas\n        # Ejemplo de: &#039; &#039;.join({&#039;A&#039;, &#039;B&#039;, &#039;C&#039;}) -&gt; &#039;A B C&#039;\n        print(f&quot;Te quedan {vidas} vidas y has usado estas letras: {&#039; &#039;.join(letras_adivinadas)}&quot;)  # join() une los elementos de un conjunto en una cadena, separados por un espacio en blanco  \n    \n        # Ejemplo de como mostrar las letras adivinadas las letras pendientes se\u00f1aladas con un &#039;-&#039;\n        # H - L A\n        # Mostrar el estado actual de la palabra\n        palabra_lista = &#x5B;letra if letra in letras_adivinadas else &#039;-&#039; for letra in palabra]  # Esta forma de escribir las listas se llama &#039;Lista por comprensi\u00f3n&#039;\n        # Mostrar estado del ahorcado\n        print(vidas_diccionario_visual&#x5B;vidas])\n        # Mostrar las letras separadas por un espacio.\n        print(f&quot;Palabra: {&#039; &#039;.join(palabra_lista)}&quot;)\n        \n        letra_usuario = input(&quot;Escoge una letra: &quot;).upper()\n        \n        # Si la letra escogida es v\u00e1lida (es una letra del abecedario y no ha sido escogida antes)\n        # se a\u00f1ade la letra al conjunto de letras adivinadas\n        if letra_usuario in abecedario - letras_adivinadas:\n            letras_adivinadas.add(letra_usuario)  # A\u00f1ade la letra al conjunto de letras adivinadas\n            # Si la letra esta en la palabra por adivinar?\n            # remover la letra del conjunto de letras pendientes por adivinar\n            # Si no esta en la palabra, quitar una vida al usuario\n            if letra_usuario in letras_por_adivinar:\n                letras_por_adivinar.remove(letra_usuario)\n                print(&#039; &#039;)\n            else:\n                vidas -= 1  # Es lo mismo que vidas = vidas - 1\n                print(f&quot;\\nTu letra, {letra_usuario} no est\u00e1 en la palabra.&quot;)\n        # Si la letra escogida por el usuario ya fue ingresada\n        elif letra_usuario in letras_adivinadas:\n            print(&quot;\\nYa escogiste esa letra. Por favor escoge una letra nueva.&quot;)\n        else:\n            print(&quot;Esta letra no es v\u00e1lida.&quot;)\n            \n    # El juego llega a esta l\u00ednea cuando se adivinan todas las letras de la palabra\n    # o cuando se agotan la vidas del jugador\n    if vidas == 0:\n        print(f&quot;\u00a1Ahorcado! Perdiste. Lo lamento mucho. la palabra era: {palabra}&quot;)\n    else:\n        print(f&quot;\u00a1Excelente! Adivinaste la palabra: {palabra}&quot;)\n        print(&quot;Gracias por jugar.&quot;)\n\n\nahorcado()\n\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Copia el contenido del siguiente bloque y p\u00e9galo en el Bloc de Notas, guarda el archivo con el nombre de palabras_.py en la misma carpeta donde tienes el archivo del programa principal.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>palabras = &#91;\"aire\", \"ojos\", \"piel\", \"anteojos\", \"joven\", \"viejo\", \"alto\", \"bajo\", \"peque\u00f1o\", \"gordo\", \"delgado\", \"bella\", \"azul\", \"verde\", \"negro\", \"sombrero\", \"guantes\", \"corbata\", \"gemelos\", \"paraguas\", \"plata\", \"oro\", \"perla\", \"diamante\", \"esmeralda\", \"anillo\", \"pulsera\", \"reloj\", \"elegante\", \"sencillo\", \"chaqueta\", \"traje\", \"camisa\", \"zapatos\", \"pelo\", \"maquillaje\", \"peine\", \"dedo\", \"hueso\", \"cara\", \"ojo\", \"calor\", \"ambulancia\", \"enfermera\", \"farmacia\", \"vitaminas\", \"pastillas\", \"dentista\", \"ciego\", \"correr\", \"caminar\", \"regresar\", \"saltar\", \"fin\", \"cerrar\", \"nombre\", \"mujer\", \"hombre\", \"soltero\", \"novio\", \"nacer\", \"vivir\", \"edad\", \"anciana\",\"trabajar\", \"cobrar\", \"azafata\", \"artista\", \"panadero\", \"carpintero\", \"cocinero\", \"maestro\", \"bombero\", \"juez\", \"modelo\", \"monje\", \"pintor\", \"piloto\", \"secretaria\", \"taxista\", \"escritor\", \"jefe\", \"aprendiz\", \"jubilado\", \"empleo\", \"industria\", \"taller\", \"tienda\", \"vacaciones\", \"sueldo\", \"impuesto\", \"huelga\", \"obedecer\", \"locura\", \"humor\", \"inteligencia\", \"orgullo\", \"timidez\", \"valiente\", \"aburrido\", \"loco\", \"divertido\", \"bueno\", \"feliz\", \"amable\", \"pobre\", \"serio\", \"extra\u00f1o\", \"gritar\", \"llorar\", \"suspirar\", \"preocupado\", \"risa\", \"amor\", \"suerte\", \"enamorado\", \"ver\", \"apagar\", \"luz\", \"color\", \"lupa\", \"microscopio\", \"claro\", \"cantar\", \"silbar\", \"voz\", \"eco\", \"trueno\", \"altavoz\", \"radio\", \"auricular\", \"liso\", \"comer\", \"dulce\", \"salado\", \"perfume\", \"despertarse\", \"vestirse\", \"desayunar\", \"leer\", \"dormirse\", \"toalla\", \"cobija\", \"almuerzo\", \"sopa\", \"agua\", \"leche\", \"jugo\", \"sal\", \"pimienta\", \"vinagre\", \"ajo\", \"perejil\", \"menta\", \"canela\", \"mayonesa\", \"pan\", \"mantequilla\", \"miel\", \"manzana\", \"pera\", \"durazno\", \"cereza\", \"papa\", \"lechuga\", \"arroz\", \"pollo\", \"pavo\", \"hamburguesa\", \"camarones\", \"tortilla\", \"espagueti\", \"sopa\", \"helado\", \"chocolate\", \"galletas\", \"bombones\", \"limpiar\", \"cortar\", \"hervir\", \"planchar\", \"aspiradora\", \"plancha\", \"horno\", \"abrelatas\", \"vajilla\", \"vaso\", \"cafetera\", \"azucarera\", \"comprar\", \"gastar\", \"vender\", \"barato\", \"caro\", \"gratis\", \"cliente\", \"bolsa\", \"precio\", \"recibo\", \"ascensor\", \"esquiar\", \"ciclismo\", \"golf\", \"pelota\", \"tenis\", \"bicicleta\", \"estadio\", \"gol\", \"torneo\", \"leer\", \"dibujar\", \"cantar\", \"bailar\", \"libro\", \"revista\", \"clavo\", \"cine\", \"pala\", \"cocina\", \"hielo\", \"coro\", \"piano\", \"cartas\", \"pesca\", \"radio\", \"noticias\", \"televisor\", \"documental\", \"anuncio\", \"aplaudir\", \"teatro\", \"circo\", \"mago\", \"disco\", \"portero\", \"propina\", \"regalo\", \"fiesta\", \"vela\", \"alfombra\", \"puerta\", \"ventana\", \"cortina\", \"escritorio\", \"cuadro\", \"juguete\", \"alquiler\", \"mudanza\", \"casa\", \"pared\", \"chimenea\", \"comedor\", \"plaza\", \"calle\", \"estacionamiento\", \"parque\", \"puente\", \"puerto\", \"edificio\", \"escuela\", \"museo\", \"estatua\", \"fuente\", \"turista\", \"mendigo\", \"manejar\", \"acelerar\", \"frenar\", \"cruzar\", \"reparar\", \"conductor\", \"multa\", \"atasco\", \"carretera\", \"peaje\", \"curva\", \"florecer\", \"campo\", \"bosque\", \"huerto\", \"selva\", \"tronco\", \"rama\", \"flor\", \"hoja\", \"musgo\", \"cedro\", \"roble\", \"pino\", \"nogal\", \"naranjo\", \"tallo\", \"clavel\", \"margarita\", \"amapola\", \"rosa\", \"girasol\", \"violeta\", \"gato\", \"perro\", \"vaca\", \"pato\", \"oveja\", \"conejo\", \"pez\", \"oso\", \"jirafa\", \"erizo\", \"mariposa\", \"foca\", \"tigre\", \"cobra\", \"almeja\", \"paloma\", \"cisne\", \"mosquito\", \"hormiga\", \"llover\", \"nevar\", \"nublado\", \"soleado\", \"clima\", \"rayo\", \"nieve\", \"sol\", \"viento\", \"padre\", \"madre\", \"hijo\", \"abuela\", \"estudioso\", \"aula\", \"tiza\", \"regla\", \"computadora\", \"diccionario\"]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Copia el contenido del siguiente bloque y p\u00e9galo en el Bloc de Notas, guarda el archivo con el nombre de ahorcado_diagramas.py en la misma carpeta donde tienes el archivo del programa principal.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vidas_diccionario_visual = {\n        0: \"\"\"\n                ___________\n               | \/        | \n               |\/        ( )\n               |          |\n               |         \/ \\\\\n               |\n           \"\"\",\n        1: \"\"\"\n                ___________\n               | \/        | \n               |\/        ( )\n               |          |\n               |         \/ \n               |\n            \"\"\",\n        2: \"\"\"\n                ___________\n               | \/        | \n               |\/        ( )\n               |          |\n               |          \n               |\n            \"\"\",\n        3: \"\"\"\n                ___________\n               | \/        | \n               |\/        ( )\n               |          \n               |          \n               |\n            \"\"\",\n        4: \"\"\"\n                ___________\n               | \/        | \n               |\/        \n               |          \n               |          \n               |\n            \"\"\",\n        5: \"\"\"\n                ___________\n               | \/        \n               |\/        \n               |          \n               |          \n               |\n            \"\"\",\n        6: \"\"\"\n               |\n               |\n               |\n               |\n               |\n            \"\"\",\n        7: \"\",\n    }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Veamos los resultados en la consola:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PS C:\\Users\\\/Codigo\/Modulo 2\/El_ahorcado.py\"\n**********************************\n\u00a1Bienvenido al juego del Ahorcado!\n**********************************\nTe quedan 7 vidas y has usado estas letras: \n\nPalabra: - - - - - -\nEscoge una letra: a\n \nTe quedan 7 vidas y has usado estas letras: A\n\nPalabra: - A - - A -\nEscoge una letra: p\n\nTu letra, P no est\u00e1 en la palabra.\nTe quedan 6 vidas y has usado estas letras: P A\n\n               |\n               |\n               |\n               |\n               |\n\nPalabra: - A - - A -\nEscoge una letra: s\n \nTe quedan 6 vidas y has usado estas letras: P S A\n\n               |\n               |\n               |\n               |\n               |\n\nPalabra: - A S - A -\nEscoge una letra: c\n\nTu letra, C no est\u00e1 en la palabra.\nTe quedan 5 vidas y has usado estas letras: P S A C\n\n                ___________\n               | \/\n               |\/\n               |\n               |\n               |\n\nPalabra: - A S - A -\nEscoge una letra: t\n \nTe quedan 5 vidas y has usado estas letras: A T C P S\n\n                ___________\n               | \/\n               |\/\n               |\n               |\n               |\n\nPalabra: - A S T A -\nEscoge una letra: n\n\nTu letra, N no est\u00e1 en la palabra.\nTe quedan 4 vidas y has usado estas letras: N A T C P S\n\n                ___________\n               | \/        |\n               |\/\n               |\n               |\n               |\n\nPalabra: - A S T A -\nEscoge una letra: r\n \nTe quedan 4 vidas y has usado estas letras: N A T R C P S\n\n                ___________\n               | \/        |\n               |\/\n               |\n               |\n               |\n\nPalabra: - A S T A R\nEscoge una letra: g\n \n\u00a1Excelente! Adivinaste la palabra: GASTAR\nGracias por jugar.\nPS C:\\Users\\augus\\OneDrive\\Documentos\\Pythom\\Pagina Web Python.hmoweb.net\\Codigo\\Modulo 2> <\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Es recomendable que este ejercicio lo escribas (trata de no copiarlo) y lo revises para ver que se obtiene el resultado esperado. Si tiene alguna duda utiliza el debugger para ejecutar el programa paso por paso. Si estas siguiendo el video, este ejercicio lo encontraras en el minuto [1:15:19] Copia el contenido del siguiente bloque &#8230; <a title=\"Proyecto 5 El Ahorcado\" class=\"read-more\" href=\"https:\/\/hmoweb.net\/Python\/2025\/08\/26\/proyecto-5-el-ahorcado\/\" aria-label=\"Leer m\u00e1s sobre Proyecto 5 El Ahorcado\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"pagelayer_contact_templates":[],"_pagelayer_content":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-636","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/posts\/636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/comments?post=636"}],"version-history":[{"count":2,"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/posts\/636\/revisions"}],"predecessor-version":[{"id":641,"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/posts\/636\/revisions\/641"}],"wp:attachment":[{"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/media?parent=636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/categories?post=636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hmoweb.net\/Python\/wp-json\/wp\/v2\/tags?post=636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}