🧭 Mini‑proyecto en Python: Menús interactivos con Programación Orientada a Objetos

En este artículo te presento un pequeño proyecto en Python que demuestra, de forma sencilla y práctica, cómo aplicar Programación Orientada a Objetos (POO) para crear un menú interactivo en consola.
El objetivo es que el usuario pueda navegar por distintas categorías del blog y abrir artículos directamente en su navegador.
Es un ejemplo ideal para aprender:

  • Cómo organizar código en clases
  • Cómo crear objetos y métodos
  • Cómo encapsular comportamientos
  • Cómo usar diccionarios para mapear opciones
  • Cómo interactuar con el sistema y el navegador
    Vamos paso a paso.

🧱 ¿Por qué este proyecto es POO?
La Programación Orientada a Objetos se basa en cuatro pilares fundamentales:

  1. Clases
  2. Objetos
  3. Métodos
  4. Encapsulación
    Este proyecto utiliza los cuatro de forma clara y didáctica.

🏗️ 1. Clases: la estructura del programa
El proyecto tiene dos clases principales:

Es la clase encargada de mostrar todos los menús y ejecutar las acciones correspondientes.
Dentro de ella viven métodos como:

  • Cada método representa una pantalla o acción del programa.

    Es la clase que contiene el punto de entrada del programa.
    Su método es el encargado de:
  • Crear un objeto
  • Mostrar el menú principal
  • Leer la opción del usuario
  • Llamar al menú correspondiente

🧩 2. Objetos: instancias que ejecutan acciones
En se crea un objeto:

Ese objeto es el que:

  • Muestra los menús
  • Abre enlaces
  • Gestiona la interacción
    En POO, un objeto es una instancia de una clase, y este proyecto lo utiliza exactamente como debe ser.

🛠️ 3. Métodos: comportamientos del objeto
Cada menú es un método dentro de la clase .
Por ejemplo:

  • abre artículos según el lenguaje elegido
  • abre la categoría de cocina
  • abre la sección de historia
    En POO, los métodos representan acciones que un objeto puede realizar.
    Aquí se ve de forma muy clara.

🔒 4. Encapsulación: organización y claridad
Aunque este proyecto no usa atributos privados, sí encapsula comportamientos dentro de clases.
Esto significa:

  • El código está organizado
  • Cada clase tiene una responsabilidad clara
  • No hay funciones sueltas
  • Todo está agrupado de forma lógica
    Es exactamente lo que busca la POO:
    👉 orden, modularidad y claridad.

📁 Estructura del proyecto

🧠 ¿Qué hace cada archivo?
📌
Contiene la clase , que agrupa todos los menús y acciones.
Es el “cerebro visual” del programa.

  • Muestra el menú principal
  • Permite elegir lenguajes de programación
  • Abre categorías del blog
  • Usa diccionarios para mapear opciones
  • Usa para abrir enlaces
  • Usa para no bloquear la ejecución

📌
Contiene la clase y el método .

  • Crea un objeto
  • Muestra el menú principal
  • Lee la opción del usuario
  • Valida la entrada
  • Llama al menú correspondiente
  • Abre el blog al salir
    Además, utiliza para indicar que no necesita una instancia de la clase.

🎯 Conclusión
Este proyecto es un ejemplo perfecto de Programación Orientada a Objetos aplicada a un caso real:

  • Las clases organizan el código
  • Los objetos ejecutan acciones
  • Los métodos representan comportamientos
  • La encapsulación mantiene todo limpio y modular
    Es sencillo, práctico y útil, ideal para quienes están aprendiendo Python y quieren ver cómo se aplica la POO en un proyecto real.

📝 Nota final del artículo

Crea todo el proyecto dentro de la misma carpeta.
Si colocas los archivos en directorios distintos o cambias su ubicación sin ajustar las rutas, el proyecto no funcionará correctamente.




🧾 Cómo crear un Registro de Personal en Python con JSON (guía didáctica y visual)

La estructura está pensada para que el lector aprenda, disfrute y pueda copiar el código sin miedo.
Aquí la tienes 👇

🧾 Cómo crear un Registro de Personal en Python con JSON (guía didáctica y visual)
En este artículo vamos a construir un pequeño sistema para registrar personas, guardar sus datos en un archivo JSON y buscar empleados por cargo.
Todo desde consola, paso a paso, con código limpio y explicaciones claras.
Ideal para quienes están aprendiendo Python y quieren practicar clases, archivos, JSON y bucles.

🎯 Objetivo del proyecto
Vamos a crear un programa que permita:

  • Registrar personas (nombre, edad, sexo, cargo).
  • Guardarlas en un archivo sin borrar lo anterior.
  • Mostrar los datos guardados.
  • Buscar personas por cargo.
  • Mantener un formato bonito y legible.

🧱 1. La clase
Comenzamos creando una clase que represente a cada persona:

Esta clase nos permite trabajar con objetos, pero también convertirlos a diccionarios para guardarlos en JSON.

📦 2. Guardar datos en un archivo JSON
Creamos una función que:

  1. Carga el archivo si existe.
  2. Si no existe, crea una lista vacía.
  3. Agrega la nueva persona.
  4. Guarda todo con formato bonito.

📝 3. Registrar una persona
Pedimos los datos por consola, creamos el objeto y lo guardamos:

🔍 4. Buscar personas por cargo
Ahora viene la parte interactiva: un pequeño menú para buscar empleados por cargo.

📁 5. ¿Cómo queda el archivo ?
Después de registrar varias personas, el archivo se verá así:

Cada nueva persona se agrega al final sin borrar lo anterior.

🎨 6. Explicación visual (tu toque didáctico)
Imagina el archivo JSON como una estantería de fichas:

Cada vez que registras una persona, simplemente añades una ficha más.
Y cuando buscas por cargo, el programa revisa cada ficha como si dijera:

Hasta encontrar coincidencias.

🧠 7. Qué aprende el lector con este proyecto

  • Uso de clases en Python.
  • Conversión de objetos a diccionarios.
  • Lectura y escritura de archivos JSON.
  • Manejo de errores.
  • Búsquedas dentro de listas.
  • Interacción por consola.
  • Persistencia de datos.
    Un proyecto perfecto para principiantes que quieren dar un salto hacia programas más útiles y reales.

1. Importaciones

import json

import os from os

import system

¿Qué hace cada una?

  • json → permite leer y escribir archivos JSON.
  • os → permite comprobar si un archivo existe.
  • system → permite ejecutar comandos del sistema como pause o cls.

🧱 2. Clase Personal

class Personal: def __init__(self, nombre, edad, sexo, cargo): self.nombre = nombre self.edad = edad self.sexo = sexo self.cargo = cargo

¿Qué es esto?

Es un molde para crear personas.
Cada persona tendrá:

  • nombre
  • edad
  • sexo
  • cargo

📌 Método para mostrar información

def mostrar_informacion(self):

print(f»Nombre: {self.nombre}»)

print(f»Edad: {self.edad}»)

print(f»Sexo: {self.sexo}»)

print(f»Cargo: {self.cargo}»)

Muestra los datos en pantalla de forma ordenada.

📌 Método para convertir a diccionario

def convertir_a_diccionario(self):

return { «nombre»: self.nombre, «edad»: self.edad, «sexo»: self.sexo, «cargo»: self.cargo }

Esto es necesario porque JSON no puede guardar objetos, pero sí diccionarios.

📦 3. Función para guardar en JSON

def guardar_en_json(persona_dict):

archivo = «personal.json»

if os.path.exists(archivo):

with open(archivo, «r», encoding=»utf-8″) as f: datos = json.load(f)

else: datos = [] datos.append(persona_dict)

with open(archivo, «w», encoding=»utf-8″) as f: json.dump(datos, f, indent=4, ensure_ascii=False)

¿Qué hace?

  1. Comprueba si el archivo existe

    • Si existe → lo abre y carga su contenido.
    • Si no existe → crea una lista vacía.

  2. Agrega la nueva persona a la lista.
  3. Vuelve a guardar todo en el archivo JSON.

¿Por qué funciona tan bien?

Porque no borra lo anterior, solo añade.

🧑‍💻 4. Programa principal: registrar una persona

print(«—–Registro de Personal—–\n»)

nombre = input(«Ingrese el nombre: «)

edad = input(«Ingrese la edad: «)

sexo = input(«Ingrese el sexo: «)

cargo = input(«Ingrese el cargo: «)

Pide los datos al usuario.

📌 Crear el objeto

persona = Personal(nombre, edad, sexo, cargo)

Aquí se crea una persona real usando la clase.

📌 Mostrar y guardar

persona.mostrar_informacion() guardar_en_json(persona.convertir_a_diccionario())

  • Muestra los datos en pantalla.
  • Convierte la persona a diccionario.
  • La guarda en el archivo JSON.

📁 5. Leer el archivo JSON

with open(«personal.json», «r», encoding=»utf-8″) as archivo: datos = json.load(archivo)

Carga todas las personas registradas en una lista llamada datos.

🔍 6. Búsqueda por cargo

while True: print(«\n Estas en buscar a una persona por cargo \n»)

cargo_buscar = input(«Ingrese el cargo a buscar (o ‘salir’ para terminar): «) 

Bucle infinito hasta que el usuario escriba salir.

📌 Buscar coincidencias

encontrado = False for persona in datos:

if persona[«cargo»].lower() == cargo_buscar.lower():

print(«Persona encontrada:»)

print(json.dumps(persona, indent=4, ensure_ascii=False)) encontrado = True break

¿Qué hace?

  • Recorre todas las personas del JSON.
  • Compara el cargo ignorando mayúsculas/minúsculas.
  • Si encuentra una coincidencia:

  • La imprime en formato bonito.
  • Marca encontrado = True.
  • Sale del bucle.

📌 Si no encuentra nada

if not encontrado: print(«Cargo no encontrada.»)

📌 Pausa y limpiar pantalla

system(«pause»)

system(«cls»)

  • pause → espera que el usuario presione una tecla.
  • cls → limpia la pantalla (solo Windows).

🎯 Resumen visual del flujo

[Usuario escribe datos]

↓ [Se crea un objeto Personal]

↓ [Se convierte a diccionario]

↓ [Se guarda en personal.json]

↓ [Se cargan todos los registros]

↓ [Usuario busca por cargo]

↓ [Se muestran coincidencias]




La función enumerate en Python

Con `enumerate()`, lo que hacemos es numerar un objeto, por ejemplo, en una lista nos da el índice y a qué pertenece.

Ejemplo de codigo:

Esto no esta dando algo llamado tuplas que te esplico en este articulo que son:




Las funciones con return en Python

Las funciones no pueden devolver los valores con return para otra funcion, print, variables, etc.

>> def la_funcion_return (x,y)

>>>> resta = x – y

>>>>return (resta)

el_resultado = la_funcion_return (10,5)

print ( el_resultado )




Las funciones y los diccionarios, (kwargs)

En Python, ‘Keys argumento` podemos pasar diccionarios como parámetros de una función utilizando dobles asteriscos («Si no sabes qué es un diccionario en Python, en este artículo te lo explico«).

Este es un Ejemplo de codigo:




Python funciones.

La palabra clave ‘def’ se utiliza para definir una función, un bloque de código que podemos invocar siempre que sea necesario en nuestro código. Es un método fácil y útil; por ejemplo, si creamos una función de suma en el contexto de este artículo, podríamos llamarla cada vez que necesitemos realizar esa operación en cualquier parte de nuestro código.

def nombre_funcion () # definicion de funcion

print (» Esta es la funcion»)

print (» Aquí estaría nuestro bloque de código»)

Para llamar la función seria parecido a esto:

nombre_funcion () # Llamada sin condición alguna

def suma ():# Suma
print (» Estas en la suma \n»)
valor_teclado = float(input (» 1 Sumando».center(50,» «)))
valor_teclado1 = float(input (» 2 Sumando «.center(50,» «)))
print («+ __«.center(100,» «))

print (» hola «.center(100,»_»))

print (» Resultado».center(49,» «),valor_teclado+valor_teclado1)

Esta seria una funcion de sumar la cual seria llamada desde un if como este:

if operacion == «s» or operacion ==»S»:
suma()

Volvamos a nuestra calculadora en la que usamos todo lo visto en estos artículos con if , else, while y una nueva condición elif.

Con elif corre más rápido nuestro código ya que no entra a comprobar como con el if, podemos escribir todos los elif que nos sean necesarios.

La instrucción break sale del bucle cuando se cumple FALSE condicionada generalmente con if, de esta forma creamos un menú en nuestro código que no dará error al escribir cualquier letra que no este definida.

Aunque tiene otro error que cuando estamos en una función que nos pide un entero y por error tecleamos un carácter sale del programa con error de type, fácil de solucionar con la captura de error.

Crea una calculadora en Python con funciones, def, if, elif, uso de break para salir del bucle y limpiar la pantalla con cls.

from os import system # Importador de cls limpiar la pantalla

system(«cls») # Limpia la pantalla después de cada operación esta sentencia limpiamos la pantalla




Lambda Python

Mediante la función anónima lambda, es posible calcular el área de un círculo proporcionando su radio. Se denomina anónima porque no tiene nombre y se emplea para definir una función breve que no se volverá a utilizar en el código. No es necesario asignarle un nombre. Debemos suministrarle valores; el primero será los argumentos, seguido de los parámetros.

  • from os import system  # Importador de system ( Para borrar la pantalla)
  • while True:
  •     radio = int(input(» Introduce el radio o 0 para salir «))
  •     numero = lambda radio:3.14*(radio)# Función lambda da el valor a la variable numero : 3,14*(valor de la variable radio)
  •     print (» El área de un circulo con «,radio,» radio  es «,numero(radio))# lambda formula
  •     if radio==0 :# sale del bucle
  •         system («cls»)# Limpia la pantalla
  •         break