Recomendaciones de código Python

Iniciado por zellion, 14 Diciembre 2021, 16:10 PM

0 Miembros y 1 Visitante están viendo este tema.

zellion

Buenas tardes, estoy siguiendo el libro "Inventar con Python" donde te proponen varios juegos para hacer.

He terminado de hacer el juego del ahorcado y me gustaría que me dierais vuestra opinión o consejos para ir mejorando en este lenguaje.

Os dejo el código.

Código (python) [Seleccionar]
import random

def imagen(pos):
    imagenes = ['''A H O R C A D O
    +---+
    |
    |
    |
    |
    |
    =========''',

    '''A H O R C A D O
    +---+
    | |
    |
    |
    |
    |
    =========''',

    '''A H O R C A D O
    +---+
    | |
    | O
    |
    |
    |
    =========''',

    '''A H O R C A D O
    +---+
    | |
    | O
    | |
    |
    |
    =========''',

    '''A H O R C A D O
    +---+
    | |
    | O
    |/|
    |
    |
    =========''',

    '''A H O R C A D O
    +---+
    | |
    | O
    |/|\\
    |
    |
    =========''',

    '''A H O R C A D O
    +---+
    | |
    | O
    |/|\\
    |/
    |
    =========''',
    '''A H O R C A D O
    +---+
    | |
    | O
    |/|\\
    |/ \\
    |
    =========''']

    return imagenes[pos]

def replace_at(cadena, pos, char):
    pizarraLista = list(cadena)
    pizarraLista[pos] = char
    cadena = "".join(pizarraLista)
    return cadena

if __name__ == "__main__":
    palabraSecreta = ["mono", "caballo", "toro", "cerdo", "cabra"]
    continuar = True
    while continuar == True:

        #Inicializamos variables
        palabra = list(random.choice(palabraSecreta))
        letraSeleccionada = []
        intentos = 0
        pizarra = ""
        letrasIncorrectas = ""
        letrasCorrectas = 0

        for i in palabra:
            pizarra += "_"

        #Pintamos el tablero
        print(imagen(0))
        print("Letras incorrectas: ")
        print(pizarra)

        while intentos < 7:
            #Pedimos una letra al usuario y se verifica que no lo haya introducido previamente.
            letra = input(" \n \n Adivine una letra. ").lower()
            while letra in letraSeleccionada:
                letra = input("Esa letra ya se ha seleccionado. Elija otra letra. ").lower()
            letraSeleccionada.append(letra)

            #Se verifica si la última letra elegida se encuentra en la palabra.
            if letraSeleccionada[-1] in palabra:
                pos = 0
                #Buscamos y sustituimos en la palabra el valor _ por la letra correspondiente.
                for i in palabra:
                    if i == letraSeleccionada[-1]:
                        letrasCorrectas += 1
                        pizarra = replace_at(pizarra,pos,letraSeleccionada[-1])
                    pos += 1
                    print(imagen(intentos))
            else:
                intentos += 1
                print(imagen(intentos))
                letrasIncorrectas += letraSeleccionada[-1]
            #Refrescamos la imagen del tablero.
            print("Letras incorrectas: " + letrasIncorrectas)
            print(pizarra)

            if letrasCorrectas == len(palabra):
                print("Enhorabuena, has acertado todas las letras")
                break

        consultarContinuar = input("¿Quiere continuar? Presione Y o N. ")
        if consultarContinuar.upper() == "N":
            continuar = False



Sé que faltan validaciones para que introduzcan los datos esperados por el programa, pero me interesa más que funcionales se pueden de hacer de otra manera o más sencilla.

Muchas gracias.