prompter: Hazme un juego del ahogado en python que cumpla con las siguientes condiciones: Que use with import para usar un archivo de texto con las palabras que se van a utilizar, que tenga un sistema de vidas, que no permita ingresar valores que no sean texto y tampoco letras que el usuario haya usado anteriormente

assistant: Aquí tienes un ejemplo de código que cumple con las condiciones que mencionas:

Python:

import random

def juego_del_ahogado(palabra_secreta):
    vidas = 5
    letras_usadas = []
    palabra_progreso = ["_" for letra in palabra_secreta]

    while "_" in palabra_progreso and vidas > 0:
        letra = input("Adivina una letra: ")

        if not letra.isalpha():
            print("Por favor ingresa solo letras")
            continue

        if len(letra) != 1:
            print("Por favor ingresa solo una letra a la vez")
            continue

        if letra in letras_usadas:
            print(f"Ya has usado la letra '{letra}' antes")
            continue

        letras_usadas.append(letra)

        if letra in palabra_secreta:
            for i, l in enumerate(palabra_secreta):
                if l == letra:
                    palabra_progreso[i] = letra
        else:
            vidas -= 1
            print(f"La letra '{letra}' no está en la palabra. Te quedan {vidas} vidas")

        print(" ".join(palabra_progreso))

    if "_" not in palabra_progreso:
        print("¡Ganaste!")
    else:
        print(f"Perdiste. La palabra era '{palabra_secreta}'")

if __name__ == "__main__":
    with open("palabras.txt", "r") as f:
        palabras = f.readlines()
    palabra_secreta = random.choice(palabras).strip()
    juego_del_ahogado(palabra_secreta)

Este código usa el método open con la sentencia with para leer un archivo de texto con las palabras que se van a utilizar en el juego. La palabra secreta se elige al azar de la lista de palabras y se pasa como argumento a la función juego_del_ahogado. La función mantiene un registro de las letras usadas y las vidas restantes, y verifica que la entrada del usuario sea una letra válida que no se haya usado antes. Si la letra está en la palabra secreta, se actualiza la palabra de progreso, de lo contrario, se resta una vida. El juego continúa hasta que el usuario adivine la palabra secreta o se quede sin vidas. Al final, se muestra si el usuario ganó o perdió.

assistant: Aquí te muestro un ejemplo de código en python que cumple con las condiciones que especificaste:
import random

def juego_del_ahogado(palabras):
    vidas = 5
    letras_usadas = []
    palabra = random.choice(palabras)
    letras_correctas = [letra for letra in palabra if letra not in [' ', '-']]
    estado = ['_' for letra in palabra]

    while vidas > 0 and '_' in estado:
        print('Vidas restantes: ', vidas)
        print('Letras usadas: ', letras_usadas)
        print('Palabra: ', estado)
        letra = input('Ingrese una letra: ').lower()

        if not letra.isalpha():
            print('Por favor ingrese una letra.')
            continue

        if letra in letras_usadas:
            print('Ya has usado esa letra antes.')
            continue

        letras_usadas.append(letra)

        if letra in letras_correctas:
            for i, l in enumerate(palabra):
                if l == letra:
                    estado[i] = letra
        else:
            vidas -= 1

    if '_' not in estado:
        print('Felicidades, has ganado! La palabra era: ', palabra)
    else:
        print('Lo siento, has perdido. La palabra era: ', palabra)

if __name__ == '__main__':
    with open('palabras.txt', 'r') as f:
        palabras = [linea.strip() for linea in f.readlines()]
    juego_del_ahogado(palabras)
El archivo palabras.txt deberá tener una lista de palabras, y cada vez que se ejecute el juego, se elegirá una palabra al azar de esa lista para ser adivinada.

assistant: Aquí está el código que me pides:

```py
import random

def play_hangman():
    with open("words.txt", "r") as f:
        words = f.readlines()
    word = random.choice(words).strip().lower()
    lives = 5
    used_letters = []
    word_guessed = ["_" for letter in word]
    print("Bienvenido al juego del ahorcado!")
    print("Tienes", lives, "vidas")
    print(" ".join(word_guessed))
    
    while "_" in word_guessed and lives > 0:
        letter = input("Ingrese una letra: ").lower()
        if not letter.isalpha():
            print("Por favor ingrese solo letras")
        elif len(letter) != 1:
            print("Por favor ingrese solo una letra a la vez")
        elif letter in used_letters:
            print("Ya has usado esa letra antes, elige otra")
        else:
            used_letters.append(letter)
            if letter in word:
                for i in range(len(word)):
                    if word[i] == letter:
                        word_guessed[i] = letter
                print(" ".join(word_guessed))
            else:
                lives -= 1
                print("La letra no está en la palabra")
                print("Tienes", lives, "vidas restantes")
                print(" ".join(word_guessed))
    if "_" not in word_guessed:
        print("Felicidades, ganaste! La palabra era", word)
    else:
        print("Lo siento, has perdido. La palabra era", word)

if __name__ == "__main__":
    play_hangman()
```

Puedes comenzar a jugar si tienes Python instalado en tu sistema, además debe existir el archivo `words.txt`, con palabras separadas por saltos de línea en la misma carpeta que el archivo.