Ejercicio

Escribir un programa que simule el famoso juego del ahorcado.

El programa debe cumplir los siguientes requisitos:

  • El programa debe preguntar al usuario la palabra a adivinar. A partir de la palabra introducida debe crear una lista con los caracteres de la palabra.
  • Después debe ir preguntando al usuario por letras hasta un máximo de 5 fallos o hasta que no queden letras en la lista. En ambos casos el programa terminará pero mostrará el mensaje "Perdiste" si se comenten 5 fallos y el mensaje "Ganaste" si no quedan palabras en la lista.
  • Cada vez que el usuario introduzca una nueva letra, si la letra está en la lista la eliminará y mostrará el mensaje "Acierto", mientras que si la letra no está en la lista mostrará el mensaje "Fallo". Si la letra está más de una vez en la lista, sólo se eliminará la primera instancia que aparezca.

Requisito adicional para un punto extra:

  • Cada vez que el usuario acierte una letra debe mostrar la palabra a adivinar con las letras acertadas hasta el momento y el resto reemplazadas por asteriscos.

Solución 1


In [1]:
word = list(input('Introduce la palabra a adivinar: '))
failures = 0
while word and failures < 5:
    letter = input('Introduce una letra: ')
    if letter in word:
        print('Acierto')
        word.remove(letter)
    else:
        print('Fallo')
        failures += 1
if failures == 5:
    print('Perdiste')
else:
    print('Ganaste')


Acierto
Acierto
Fallo
Acierto
Acierto
Acierto
Acierto
Ganaste

Solución 2


In [2]:
word = input('Introduce la palabra a adivinar: ')
word = list(word)
solution = list('*' * len(word))
failures = 0
while any(word) and failures < 5:
    letter = input('Introduce una letra: ')
    if letter in word:
        print('Acierto')
        i = word.index(letter)
        word[i] = False
        solution[i] = letter
    else:
        print('Fallo')
        failures += 1
    print(solution)
if failures == 5:
    print('Perdiste')
else:
    print('Ganaste')


Acierto
['*', 'n', '*', '*', '*', '*', '*', '*']
Acierto
['a', 'n', '*', '*', '*', '*', '*', '*']
Acierto
['a', 'n', '*', 'c', '*', '*', '*', '*']
Fallo
['a', 'n', '*', 'c', '*', '*', '*', '*']
Acierto
['a', 'n', '*', 'c', 'o', '*', '*', '*']
Fallo
['a', 'n', '*', 'c', 'o', '*', '*', '*']
Acierto
['a', 'n', '*', 'c', 'o', 'n', '*', '*']
Acierto
['a', 'n', '*', 'c', 'o', 'n', 'd', '*']
Acierto
['a', 'n', 'a', 'c', 'o', 'n', 'd', '*']
Acierto
['a', 'n', 'a', 'c', 'o', 'n', 'd', 'a']
Ganaste