Ir al contenido

Mini proyectos guiados

Estos proyectos estan pensados para construir confianza. No hace falta hacerlos perfectos: primero que funcionen, despues los mejoras.

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.

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.

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}
python

Retornos: contar_palabras() devuelve un dict; palabra_mas_frecuente() devuelve str o None.

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 True
sin-arroba.com False
dos@@example.com False
persona @example.com False

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:

Ventana de terminal
python app.py Martina

Salida:

Hola, Martina

Cuando este proyecto te quede chico, mira Typer y Rich para crear interfaces de terminal mas comodas y bonitas.

  • 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.