[ Foro de Python ]

Juego del Ahorcado con IDLE de Pythom

03-Jul-2022 05:33
Invitado (Coplig)
0 Respuestas

Saludos, estoy aprendiendo pythom y esta es pregunta es mas por conocimiento que por resolver un problema este es mi codigo del juego del ahorcado y me da un problema la correrlo en idle
Este es mi programa el error es el siguiente
"Traceback (most recent call last):
 File "C:\Users\Coplig\AppData\Local\Programs\Python\Python310-32\ahorcado.py", line 112, in <module>
   mostrarTablero(IMAGENES_AHORCADO, letrasIncorrectas, letrasCorrectas, palabraSecreta)
 File "C:\Users\Coplig\AppData\Local\Programs\Python\Python310-32\ahorcado.py", line 73, in mostrarTablero
   espaciosVacios = '_' * len(palabraSecreta)
TypeError: object of type 'function' has no len()"

Y mi codigo es este
import random
AHORCADO = ['''
     +---+
     |   |
         |
         |
         |
         |
   =========''', '''
     +---+
     |   |
     O   |
         |
         |
         |
   =========''', '''
     +---+
     |   |
     O   |
     |   |
         |
         |
   =========''', '''
     +---+
     |   |
     O   |
    /|   |
         |
         |
   =========''', '''
     +---+
     |   |
     O   |
    /|\  |
         |
         |
   =========''', '''
     +---+
     |   |
     O   |
    /|\  |
    /    |
         |
   =========''', '''
     +---+
     |   |
     O   |
    /|\  |
    / \  |
         |
   =========''']
palabras = 'valoracion aprenderpython comida juego python web imposible variable curso volador cabeza reproductor mirada escritor billete lapicero celular valor revista gratuito disco voleibol anillo estrella'.split()

def buscarPalabraAleat(listaPalabras):
   # Esta funcion retorna una palabra aleatoria.
   palabraAleatoria = random.randint(0, len(listaPalabras) - 1)
   return listaPalabras[palabraAleatoria]

def displayBoard(AHORCADO, letraIncorrecta, letraCorrecta, palabraSecreta):
   print(AHORCADO[len(letraIncorrecta)])
   print ("")
   fin = " "
   print ('Letras incorrectas:', fin)
   for letra in letraIncorrecta:
       print (letra, fin)
   print ("")
   espacio = '_' * len(palabraSecreta)
   for i in range(len(palabraSecreta)): # Remplaza los espacios en blanco por la letra bien escrita
       if palabraSecreta[i] in letraCorrecta:
           espacio = espacio[:i] + palabraSecreta[i] + espacio[i+1:]
   for letra in espacio: # Mostrará la palabra secreta con espacios entre letras
       print (letra, fin)
   print ("")

def elijeLetra(algunaLetra):
   # Devuelve la letra que el jugador ingreso. Esta función hace que el jugador ingrese una letra y no cualquier otra cosa
   while True:
       print ('Adivina una letra:')
       letra = input()
       letra = letra.lower()
       if len(letra) != 1:
           print ('Introduce una sola letra.')
       elif letra in algunaLetra:
           print ('Ya has elegido esa letra ¿Qué tal si pruebas con otra?')
       elif letra not in 'abcdefghijklmnopqrstuvwxyz':
           print ('Elije una letra.')
       else:
           return letra

def empezar():
   # Esta funcion devuelve True si el jugador quiere volver a jugar, de lo contrario devuelve False
   print ('Quieres jugar de nuevo? (Si o No)')
   return input().lower().startswith('s')

print ('A H O R C A D O')
letraIncorrecta = ""
letraCorrecta = ""
palabraSecreta = buscarPalabraAleat(palabras)
finJuego = False
while True:
   displayBoard(AHORCADO, letraIncorrecta, letraCorrecta, palabraSecreta)
   # El usuairo elije una letra.
   letra = elijeLetra(letraIncorrecta + letraCorrecta)
   if letra in palabraSecreta:
       letraCorrecta = letraCorrecta + letra
       # Se fija si el jugador ganó
       letrasEncontradas = True
       for i in range(len(palabraSecreta)):
           if palabraSecreta[i] not in letraCorrecta:
               letrasEncontradas = False
               break
       if letrasEncontradas:
           print ('¡Muy bien! La palabra secreta es "' + palabraSecreta + '"! ¡Has ganado!')
           finJuego = True
   else:
       letraIncorrecta = letraIncorrecta + letra
       # Comprueba la cantidad de letras que ha ingresado el jugador y si perdió
       if len(letraIncorrecta) == len(AHORCADO) - 1:
           displayBoard(AHORCADO, letraIncorrecta, letraCorrecta, palabraSecreta)
           print ('¡Se ha quedado sin letras!\nDespues de ' + str(len(letraIncorrecta)) + ' letras erroneas y ' + str(len(letraCorrecta)) + ' letras correctas, la palabra era "' + palabraSecreta + '"')
           finJuego = True
   # Pregunta al jugador si quiere jugar de nuevo
   if finJuego:
       if empezar():
           letraIncorrecta = ""
           letraCorrecta = ""
           finJuego = False
           palabraSecreta = buscarPalabraAleat(palabras)
       else:
           break

Es corto pero no logro entender el problema saludos y gracias de ante mano




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)