[ Foro de Python ]
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.)