Giter Club home page Giter Club logo

proyecto_inicial_python's Introduction

Inove banner Inove Escuela de Código
[email protected]
Web: Inove

¡Proyecto Ahorcado! [Python]

En este repositorio contiene todos los materiales e instrucciones para poder realizar el proyecto de python inicial.

Validación y entrega del proyecto

Para validar el avance de su proyecto deberá utilizar el sistema de desafios, el cual le indicará los puntos a mejorar y continuar trabajando. Cualquier duda con el resultado del sistema de desafios, puede consultar por le discord.

Recursos

  • Contará con un script de python "interfaz.py" el cual será el responsable de dibujar la interfaz del juego.

Como comenzar

  • Deberá crear un archivo "main.py" en el cual colocará todo el código necesario para realizar el proyecto.

  • Dentro de ese archivo deberá importar las siguientes librerías ni bien comienza el archivo:

    • random
    • interfaz
  • Luego deberá crear el bloque principal if __name__ == "__main__":. Dentro del bloque principal utilizará sus funciones y desarrollará el proyecto.

  • Entre el lugar donde usted importó las librerías y generó el bloque pincipal, ahí irá creando sus funciones.

Módulo de Interfaz

  • En el archivo interfaz.py se encuentra la función "dibujar" para dibujar en consola el ahorcado.
  • Argumentos de la función dibujar:
    • palabra_secreta [string]: Palabra secreta que debe adivinar el jugador.
    • lista_letras_usadas [lista]: Lista de letras usadas hasta el momento, ingresadas por el usuario en cada intento.
    • intentos_invalidos [int]: Cantidad de intentos invalidos.
      • 0 --> no hubo errores
      • 7 --> máxima cantidad de intentos inválidos

Bloque principal del programa

Dentro del bloque principal del programa deberá colocar la siguiente estructura de código:

if __name__ == "__main__":
    print("\n¡Aquí comienza el juego del ahorcado!\n")
    # Inicializo las variables y listas a utilizar.
    max_cantidad_intentos = 7
    intentos = 0
    letras_usadas = []
    es_ganador = False

    # Leer la palabra secreta de una lista.
    palabras = ["listas", "bucles", "variables"]
    palabra_secreta = leer_palabra_secreta(palabras)
    
    # Esto se realiza para que el jugador pueda ver al principio
    # la cantidad de letras de la palabra a adivinar.
    interfaz.dibujar(palabra_secreta, letras_usadas, intentos)
    
    while intentos < max_cantidad_intentos and not es_ganador:
        # Pedir una nueva letra
        letra = pedir_letra(letras_usadas)

        # Verificar si la letra es parte de la palabra secreta        
        if verificar_letra(letra, palabra_secreta) == False:
            # En caso de no estar la letra ingresada en la palabra
            # a adivinar incremento en 1 la variable intentos.
            intentos += 1
        
        # Dibujar la interfaz
        interfaz.dibujar(palabra_secreta, letras_usadas, intentos)

        # Validar si la palabra secreta se ha adivinado
        if validar_palabra(letras_usadas, palabra_secreta) == True:
            es_ganador = True
            break

    if es_ganador:
        print(f'\n¡Usted ha ganado la partida!, palabra secreta {palabra_secreta}!\n')
    else:
        print('\n¡Ahorcado!')
        print(f'\n¡Usted ha perdido la partida!, palabra secreta {palabra_secreta}!\n')

Tener en cuenta que todas las funciones que se utilizan en ese código no están implementadas aún, será usted quien la implemente y de eso se tratará el proyecto de este curso.

Funciones del sistema

Dentro del archivo main.py deberá implementar las siguientes funciones que utilizará luego el bloque main para armar el proyecto:

Funcion "leer_palabra_secreta"

Encabezado de la función:

def leer_palabra_secreta(palabras):

Entrada (argumentos):

  • Esta función recibe por parámetro la lista de posibles palabras secretas a adivinar.

Objetivo:

  • La función deberá utilizar la función random.choice para seleccionar aleatoriamente alguna palabra de la lista de palabras. Almacenar esa palabra seleccionada en una varible.

Salida (return):

  • La función deberá retornar la palabra secreta seleccionada por el random.choice.

Funcion "pedir_letra"

Encabezado de la función:

def pedir_letra(letras_usadas):

Entrada (argumentos):

  • Esta función recibe por parámetro la lista de palabras utilizadas hastas el momento.

Objetivo:

  • Deberá armar un bucle While infinito que se ejecute hasta que el procedimiento de pedir letra se complete exitosamente.
  • Deberá pedirle al usuario que ingrese por "input" una letra nueva que no haya utilizado antes. Almacenar esa letra ingresada por "input" en una variable.
  • La letra ingresada deberá transformarse a minúscula para evitar problemas.
  • Utilizando la variable "letras_usadas" deberá verificar utilizando el operador "in" que esa letra es nueva y no se ha utilizado antes. Si se ha utilizado antes (es decir, existe dentro de "letras_usadas") el sistema no deberá salir del bucle y volverá al comienzo solicitando una letra nueva.
  • Deberá verificar que la letra ingresada es solo una letra, es decir, verificar que no se ha ingresado más de una letra a la vez. Para eso utilice la función "len". Si se ha ingresado más de una letra junta, el sistema no deberá salir del bucle y volverá al comienzo solicitando una letra nueva.
  • Si todas las condiciones se cumplen, deberá salir del bucle.
  • Antes de que finalice la función debe guardar la variable "letra" que validó en la lista "letras_usadas" utilizando append.

Salida (return):

  • La función deberá retornar la letra validada (return).

Funcion "verificar_letra"

Encabezado de la función:

def verificar_letra(letra, palabra_secreta):

Entrada (argumentos):

  • Esta función recibe por parámetro la letra ingresada por el usuario y la palabra secreta a adivinar.

Objetivo:

  • Deberá verificar si la variable "letra" es parte de la palabra secreta a divinar "palabra_secreta". Utilice el operador "in" para llevar a cabo esta verificación.

Salida (return):

  • Si la letra pertenece a la palabra secreta a adivinar, esta función debe retornar True.
  • Si la letra no pertenece a la palabra secreta a adivinar, esta función debe retornar False.

Funcion "validar_palabra"

Encabezado de la función:

def validar_palabra(letras_usadas, palabra_secreta):

Entrada (argumentos):

  • Esta función recibe por parámetro las letras ingresada hasta el momento por el usuario "letras_usadas" y la palabra secreta a adivinar "palabra_secreta".

Objetivo:

  • Deberá verificar si todas las letras de la "palabra_secreta" se encuentran contenidas/disponible en la lista de letras usadas "letras_usadas".
  • Para esto deberá armar un bucle que recorra todas las letras de "palabra_secreta". Con el operador "in" debe verificar si cada letra de la palabra secreta existe en la lista "letras_usadas".
  • Con que una letra de la palabra secreta no exista en las letras usadas, se debe terminar el bucle e indicar que aún no se ha adivinado la palabra secreta.

Salida (return):

  • Si se avidinó por completo la palabra secreta, esta función debe retornar True.
  • Si no se avidinó por completo la palabra secreta, esta función debe retornar False.

Puntos extra (bonus track)

En caso que desee mejorar el sistema puede realizar las siguientes optimizaciones. No es necesario realizar esta parte para aprobar, es un plus simplemente ^_^:

  • Robustecer la función "pedir_letra" para que no explota en caso de ingresarse un número.
  • Robustecer la función "pedir_letra" para validar que el dato ingresado es efecticamente una letra del abecedario (evitar números, símbolos, espacios).

proyecto_inicial_python's People

Contributors

inovealumnos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.