Ejercicio: 1Eva_IIT2018_T2 Juego conocimiento (Ahorcado)
Propuesta de solución al ejercicio.
Estado del juego: F*** adivine una letra: C Adivinaste...C Estado del juego: FC** turno: 1 fallas: 0 adivine una letra: M Adivinaste...M Estado del juego: FC*M turno: 2 fallas: 0 adivine una letra: A NO es una letra de palabra... Estado del juego: FC*M turno: 3 fallas: 1 adivine una letra: N Adivinaste...N Estado del juego: FCNM turno: 4 fallas: 1 Felicitaciones, adivinó: FCNM >>>
Algoritmo en Python
Siguiendo las sugerencias, para dividir y simplificar el problema, primero se crean las funciones: escondeletras(secreta)
y cambialetra(secreta,letra,estado)
.
Se inicia con la selección aleatoria de la palabra secreta y el sorteo de la letra pista
, verificando que sea consonante.
Se actualiza la palabra secreta
con la letra pista
, y se inicia el juego.
# CCPG1001 Fundamentos de Programación FIEC-ESPOL # 1Eva_IIT2018_T2 Juego conocimiento (Ahorcado) # propuesta de solución: edelros@espol.edu.ec # tarea: indiferente usar mayúsculas/minúsculas # contar solo letras adivinadas, no repetidas import numpy as np import random as rnd def escondeletras(secreta): estado = '' n = len(secreta) i = 0 while not(i>=n): estado = estado + '*' i = i + 1 return(estado) def cambialetra(secreta,letra,estado): nuevoestado = '' n = len(secreta) i = 0 while not(i>=n): if (secreta[i]==letra): nuevoestado = nuevoestado + letra else: nuevoestado = nuevoestado + estado[i] i = i + 1 return(nuevoestado) # PROGRAMA JUEGO # selecciona secreta palabras = ['ESPOL','FCNM','FIEC','FIMCP','FICT'] n = len(palabras) sorteo = int(rnd.random()*n)+0 secreta = palabras[sorteo] # estado inicial del juego estado = escondeletras(secreta) # una letra como pista consonante = 'BCDFGHJKLMNPQRSTVWXYZ' m = len(secreta) sorteo = int(rnd.random()*m)+0 pista = secreta[sorteo] while not(pista in consonante): sorteo = int(rnd.random()*m)+0 pista = secreta[sorteo] # actualiza estado del juego estado = cambialetra(secreta,pista,estado) # Control del Juego turnomax = 2*m gana = 1 falla = 0 print('Estado del juego: ', estado) turno = 1 while not(turno>turnomax or gana==m): letra = input(' adivine una letra: ') if (letra in secreta): gana = gana +1 estado = cambialetra(secreta,letra, estado) mensaje = ' Adivinaste...' + letra else: falla = falla + 1 mensaje = ' NO es una letra de palabra...' print(mensaje) print() print('Estado del juego: ', estado) print('turno:', turno) print('fallas: ', falla) turno = turno + 1 if (turno<=turnomax and gana==m): mensaje = 'Felicitaciones, adivinó: ' + secreta else: mensaje = 'lo lamento, perdió..., la palabra era: ' mensaje = mensaje + secreta # SALIDA print(mensaje)
Recuerde que se ha dejado como tarea, realizar las instrucciones para cumplir que:
– sea indiferente usar mayúsculas/minúsculas
– contar solo letras adivinadas, no repetidas
Referencia: 2Eva_IT2005_T3 Adivina palabra (ahorcado)
Solución propuesta: s2Eva_IT2005_T3 Adivina palabra (ahorcado)