Máquina de café en Python con menú interactivo por terminal

Clase 31 de 32Curso de Fundamentos de Python

Resumen

Construye una máquina de café en Python que funciona en la terminal con un flujo claro, organizado en módulos y controlado por un bucle infinito con salidas seguras. Aquí verás cómo usar while True, input, if/elif/else, break y pass para orquestar opciones como pedir un café, ver el historial y salir. Todo con un punto de entrada fiable usando if name == "main".

¿Cómo se define el flujo principal en main.py?

El corazón del programa vive en una función main dentro de main.py. Se utiliza un bucle while con condición verdadera para mantener la interacción activa, y se interrumpe con break cuando la persona elige salir. La entrada del usuario se captura con input, que devuelve siempre una cadena, así que se comparan valores como "1", "2" y "3". Para partes aún no implementadas, se usa pass.

Puntos clave: - Bucle infinito controlado con while True y cortes con break. - Entrada por terminal con input y opciones en texto. - Ramas condicionales con if/elif/else para navegar el menú. - Marcador de entrada del programa con if name == "main".

Código sugerido para main.py:

from menu import mostrar_menu
from pedidos import pedir_cafe

def main():
    while True:
        # mostrar el menú principal
        mostrar_menu()

        # pedir opción al usuario
        opcion = input("Selecciona una opción: ")

        if opcion == "1":
            # pedir un café (lógica ampliada más adelante)
            pedir_cafe()
            pass
        elif opcion == "2":
            # ver historial (se implementará leyendo un archivo)
            pass
        elif opcion == "3":
            print("\nMuchas gracias por haber tomado nuestros riquísimos cafés.")
            break
        else:
            print("Opción inválida. Por favor, indique una de las opciones sugeridas.")

if __name__ == "__main__":
    main()

¿Qué muestra el menú y cómo se importa?

El menú se encapsula en un módulo separado para mantener el flujo principal limpio y modular. Se imprime un encabezado con un salto de línea usando "\n" y tres opciones: pedir un café, ver el historial y salir. Luego, se importa con from menu import mostrar_menu.

Puntos clave: - Modularidad: un archivo dedicado para el menú. - Salida formateada con print y saltos de línea. - Import explícito de funciones para invocarlas desde el archivo principal.

Código sugerido para menu.py:

def mostrar_menu():
    print("\nBienvenido a la máquina de café")
    print("1. Pedir un café")
    print("2. Ver el historial de pedidos")
    print("3. Salir")

¿Cómo se pide un café y se preparan las opciones?

Para la opción 1, se crea pedidos.py con una función que imprime una lista de cafés y solicita una opción. Se define un diccionario para mapear números a nombres de cafés. Más adelante, esa elección se guardará en un archivo para alimentar el historial.

Puntos clave: - Función dedicada: separar la lógica de pedidos. - Diccionario para mapear opciones a cafés. - Entrada del usuario con input y texto claro.

Código sugerido para pedidos.py:

def pedir_cafe():
    print("\nElige el café que prefieras:")
    print("1. Expreso")
    print("2. Capuchino")
    print("3. Latte")
    print("4. Americano")

    opcion = input("Opción: ")

    cafes = {
        "1": "expreso",
        "2": "capuchino",
        "3": "latte",
        "4": "americano"
    }
    # la elección y el guardado en archivo se implementarán más adelante

¿Te gustaría añadir más tipos de café o validar la opción elegida? Comparte tus ideas y mejoras en los comentarios.