Mini proyectos guiados
Estos proyectos estan pensados para construir confianza. No hace falta hacerlos perfectos: primero que funcionen, despues los mejoras.
Proyecto 1: calculadora de presupuesto
Sección titulada «Proyecto 1: calculadora de presupuesto»Objetivo: recibir ingresos y gastos, devolver saldo y estado.
def calcular_saldo(ingresos, gastos): total_ingresos = sum(ingresos) total_gastos = sum(gastos) saldo = total_ingresos - total_gastos return { "ingresos": total_ingresos, "gastos": total_gastos, "saldo": saldo, "positivo": saldo >= 0, }
resultado = calcular_saldo([1200, 300], [400, 90, 150])
print(resultado)Salida:
{'ingresos': 1500, 'gastos': 640, 'saldo': 860, 'positivo': True}Retorno: calcular_saldo(...) devuelve un dict con totales y un booleano.
Mejoras:
- Pedir datos con
input(). - Guardar el resultado en JSON.
- Agregar categorias de gasto.
Proyecto 2: gestor de tareas en archivo
Sección titulada «Proyecto 2: gestor de tareas en archivo»Objetivo: guardar tareas en tareas.txt.
def agregar_tarea(tarea, ruta="tareas.txt"): with open(ruta, "a", encoding="utf-8") as archivo: archivo.write(f"{tarea}\n")
def listar_tareas(ruta="tareas.txt"): try: with open(ruta, "r", encoding="utf-8") as archivo: return [linea.strip() for linea in archivo if linea.strip()] except FileNotFoundError: return []
agregar_tarea("Estudiar funciones")agregar_tarea("Resolver mini proyecto")
print(listar_tareas())Salida:
['Estudiar funciones', 'Resolver mini proyecto']Retornos: agregar_tarea() devuelve None; listar_tareas() devuelve list[str].
Mejoras:
- Marcar tareas como completadas.
- Usar JSON para guardar
{"titulo": "...", "completada": false}. - Crear un menu con opciones.
Proyecto 3: analizador de texto
Sección titulada «Proyecto 3: analizador de texto»Objetivo: contar palabras y detectar las mas frecuentes.
def normalizar(texto): return texto.lower().replace(",", "").replace(".", "")
def contar_palabras(texto): palabras = normalizar(texto).split() conteo = {}
for palabra in palabras: conteo[palabra] = conteo.get(palabra, 0) + 1
return conteo
def palabra_mas_frecuente(texto): conteo = contar_palabras(texto)
if not conteo: return None
return max(conteo, key=conteo.get)
texto = "Python es claro. Python es practico."
print(contar_palabras(texto))print(palabra_mas_frecuente(texto))Salida:
{'python': 2, 'es': 2, 'claro': 1, 'practico': 1}pythonRetornos: contar_palabras() devuelve un dict; palabra_mas_frecuente() devuelve str o None.
Proyecto 4: validador de emails
Sección titulada «Proyecto 4: validador de emails»Objetivo: practicar booleanos, strings y tests manuales.
def email_valido(email): email = email.strip()
if " " in email: return False if email.count("@") != 1: return False
usuario, dominio = email.split("@")
return bool(usuario) and "." in dominio
casos = [ "ana@example.com", "sin-arroba.com", "dos@@example.com", "persona @example.com",]
for caso in casos: print(caso, email_valido(caso))Salida:
ana@example.com Truesin-arroba.com Falsedos@@example.com Falsepersona @example.com FalseProyecto 5: CLI simple
Sección titulada «Proyecto 5: CLI simple»Objetivo: recibir argumentos desde la terminal.
import sys
def saludar(nombre): return f"Hola, {nombre}"
def main(): if len(sys.argv) < 2: print("Uso: python app.py NOMBRE") return
print(saludar(sys.argv[1]))
if __name__ == "__main__": main()Ejecutar:
python app.py MartinaSalida:
Hola, MartinaCuando este proyecto te quede chico, mira Typer y Rich para crear interfaces de terminal mas comodas y bonitas.
Checklist final
Sección titulada «Checklist final»- Se usar funciones con
return. - Se cuando una funcion devuelve
None. - Puedo recorrer listas y diccionarios.
- Puedo leer y escribir archivos.
- Puedo dividir un programa en modulos.
- Puedo explicar que tipo devuelve cada parte importante de mi codigo.