Imagen de portada del blog

La imagen tiene un fondo azul con cuatro iconos tecnológicos: un símbolo de señal Wi-Fi en la esquina superior izquierda, un portátil en la esquina superior derecha, dos engranajes (uno azul y otro amarillo) en la esquina inferior derecha y un navegador web con "www" en la esquina inferior izquierda. En el centro hay una placa base de computadora. Alrededor de la placa base está el texto "COMUNIDAD TIFLOTEC" en color naranja, formando un semicírculo.

clase 14: Proyecto Final - El Desafío de los Valientes


Indicación metodológica de lectura fundamental para el estudiante


Se acabó la teoría. Se acabaron los cuestionarios sobre su lector de pantalla, las explicaciones históricas y los ejercicios mentales de calentamiento. Usted ha llegado a la Semana 14. Todo el conocimiento que necesita para crear software real, útil y funcional ya reside en su mente, en sus notas y en la disciplina que ha forjado durante estas semanas.


Este documento contiene únicamente las especificaciones de su Proyecto Final. Este es un verdadero reto, diseñado solo para aquellos que tienen la madurez, la tenacidad y la valentía de enfrentar la pantalla en blanco y construir sistemas desde cero. Lea las instrucciones con absoluta atención.


Reglas de Aprobación del Proyecto Final


A continuación, se le presentarán seis proyectos de software. La dificultad de estos proyectos aumenta progresivamente: el proyecto uno es el más accesible, y el proyecto seis es un reto absoluto de ingeniería.


Regla 1: Para aprobar este bloque y tener derecho a la Evaluación Final, usted está OBLIGADO a completar y entregar exactamente tres proyectos de esta lista. Usted elige cuáles.

Regla 2: Si usted desea demostrar un nivel superior, puede completar un cuarto proyecto para subir su calificación y obtener honores.

Regla 3: Si completa cinco proyectos, su calificación alcanzará la excelencia absoluta.

Regla 4: El estudiante es completamente libre de elegir hacer los seis proyectos si su deseo de aprender y superarse no tiene límites. Si usted logra resolver el proyecto número seis, habrá demostrado que tiene la lógica implacable de un verdadero programador.

Regla 5: Cada proyecto debe ser un archivo de Python independiente, por ejemplo: proyecto_uno.py. Todos deben funcionar de principio a fin sin colapsar.


A continuación, los seis retos. Elija sus batallas.


---


Proyecto 1: La Calculadora de Gastos Mensuales (Nivel Básico)


Contexto: Las personas necesitan saber en qué se les va el dinero. Su programa será una herramienta de contabilidad personal.


El Reto:

Construya un programa que utilice un bucle infinito, la estructura while, para preguntarle al usuario dos cosas: el nombre de un gasto, por ejemplo Luz, Agua, Internet, y el monto de ese gasto. El programa debe seguir pidiendo datos hasta que el usuario escriba la palabra fin.


Resultado esperado:

Cuando el usuario escriba fin, el programa debe sumar todos los montos ingresados y mostrar en la consola el total de gastos del mes. Además, debe crear un archivo llamado gastos_mensuales.txt y guardar allí la lista detallada de cada gasto y el gran total al final.


Ayuda técnica:

Necesitará una variable acumuladora iniciada en cero para sumar los montos. Recuerde usar try-except al pedir el monto, por si el usuario escribe texto en lugar de números y evitar que el programa explote. Guarde los nombres y montos en una lista temporal antes de escribirlos en el disco duro.


---


Proyecto 2: La Agenda de Contactos Persistente (Nivel Intermedio)


Contexto: Un programa que pierde la información al cerrarse no es útil. Crearemos una agenda que recuerde a sus contactos en el disco duro.


El Reto:

Cree un programa que muestre un menú con tres opciones: 1. Agregar contacto, 2. Ver contactos, 3. Salir.

Si el usuario elige 1, se le pedirá nombre y teléfono, y estos datos se guardarán inmediatamente en un archivo de texto llamado agenda.txt.

Si el usuario elige 2, el programa debe abrir el archivo agenda.txt en modo lectura, leer todo su contenido y mostrarlo en la consola.


Resultado esperado:

Un sistema que no se cierre hasta que el usuario elija la opción 3. Si el usuario cierra el programa y lo vuelve a abrir al día siguiente, al elegir la opción 2, los contactos guardados el día anterior deben seguir allí intactos.


Ayuda técnica:

Use el modo "a", o append, en la función open para agregar contactos sin borrar los anteriores. Use el modo "r", o read, para la opción 2. Controle el flujo del menú con un ciclo while y estructuras if-elif.


---


Proyecto 3: El Analizador de Documentos (Nivel Intermedio-Alto)


Contexto: La automatización de oficinas requiere procesar textos largos en fracciones de segundo.


El Reto:

Primero, cree manualmente un archivo de texto llamado borrador.txt y escriba en él tres párrafos largos sobre cualquier tema.

Luego, cree su programa en Python. El programa debe abrir borrador.txt, leer todo el texto y hacer tres cosas:


1. Contar cuántas palabras hay en total en el documento.

2. Convertir todo el documento a letras mayúsculas.

3. Guardar el documento convertido a mayúsculas en un archivo nuevo llamado documento_final.txt.


Resultado esperado:

La consola debe imprimir un mensaje indicando cuántas palabras tiene el documento. En su carpeta, debe aparecer el nuevo archivo documento_final.txt con todo el texto impecablemente transformado a mayúsculas.


Ayuda técnica:

Para contar palabras, recuerde el método .split(" ") que convierte una cadena de texto en una lista separada por espacios; luego use la función len() para saber cuántos elementos tiene esa lista. Use el método .upper() para las mayúsculas.


---


Proyecto 4: El Simulador de Cajero Automático (Nivel Alto)


Contexto: Los sistemas bancarios requieren seguridad, funciones modulares y un manejo estrictamente defensivo de los errores.


El Reto:

Diseñe un programa que simule un cajero. El usuario comienza con un saldo de 50000.

El programa debe tener funciones definidas con la palabra def para depositar y retirar.

El programa principal debe tener un bucle que muestre estas opciones. Si el usuario retira, el saldo disminuye; si deposita, aumenta.


Reglas estrictas:


1. Si el usuario intenta retirar más dinero del que tiene, el programa debe denegar la transacción y mostrar un mensaje de fondos insuficientes.

2. Si el usuario escribe letras en lugar de la cantidad a retirar o depositar, el programa debe capturar el error con try-except ValueError y no colapsar.


Resultado esperado:

Un cajero robusto del cual es imposible sacar más dinero del que existe, imposible de romper escribiendo letras, y que actualice el saldo perfectamente en cada transacción hasta que el usuario decida salir.


Ayuda técnica:

Para no tener problemas con variables que se borran, pásele el saldo actual a sus funciones dentro de los paréntesis como un parámetro y obligue a la función a usar return para devolver el nuevo saldo calculado al programa principal.


---


Proyecto 5: Sistema de Inventario de Almacén (Nivel Muy Alto)


Contexto: Usted ha sido contratado para administrar una bodega. Aquí pondrá a prueba su dominio absoluto de los Diccionarios y la persistencia de datos.


El Reto:

Cree un inventario utilizando un Diccionario. Las claves serán los nombres de los productos y los valores serán las cantidades disponibles. Por ejemplo: inventario = {"cables": 15, "teclados": 5}.

El programa debe tener un menú completo:


1. Agregar producto nuevo. Pide nombre y cantidad.

2. Actualizar cantidad. Busca un producto que ya existe y reemplaza su stock.

3. Eliminar producto. Borra el producto del diccionario.

4. Guardar y Salir. Escribe el diccionario completo en un archivo inventario_bodega.txt y cierra el sistema.


Resultado esperado:

Un programa donde el usuario manipule claves y valores en tiempo real. Si intenta actualizar o eliminar un producto que no existe, el programa debe capturar el KeyError y decirle Producto no encontrado, permitiéndole continuar. Al finalizar, el estado de la bodega debe quedar impreso en el disco duro.


Ayuda técnica:

Recuerde que para crear o modificar un valor existente solo debe hacer: inventario["clave"] = nueva_cantidad. El manejo de excepciones es vital aquí para evitar colapsos. Para escribir el diccionario en el archivo, recuerde convertirlo a texto usando la función str().


---


Proyecto 6: El Encriptador de Seguridad (Reto Absoluto)


Contexto: La ciberseguridad se basa en alterar mensajes para que nadie más pueda leerlos. Usted va a programar un motor de encriptación clásico conocido como Cifrado César. Este reto exige lógica matemática, ciclos y un control quirúrgico de los índices de las listas y cadenas.


El Reto:

Cree un programa que encripte mensajes. Usted debe definir una variable con el alfabeto exacto: alfabeto = "abcdefghijklmnopqrstuvwxyz".

El programa le pedirá al usuario un mensaje y un número de llave, por ejemplo el número 2.

El programa debe recorrer cada letra del mensaje del usuario usando un ciclo for. Por cada letra, debe buscar en qué posición o índice está dentro del alfabeto, sumarle el número de la llave, y encontrar la nueva letra en esa nueva posición.

Por ejemplo: Si la letra es a y la llave es 2, la letra a está en la posición 0. Cero más dos es igual a dos. La letra en el índice 2 del alfabeto es c.

El programa construirá un mensaje nuevo, totalmente ilegible, y lo guardará en mensaje_secreto.txt.


Resultado esperado:

Si el usuario escribe abc con llave 1, el programa genera bcd. El sistema debe ser capaz de procesar textos enteros.


Ayuda técnica:

Este es el reto máximo. Le daré la herramienta final que necesita: para saber en qué número de índice está una letra dentro de su variable alfabeto, use el comando .index(). Por ejemplo: posicion = alfabeto.index("h").

El obstáculo real a resolver: ¿Qué pasa si la letra es z, que está en la posición 25, y la llave es 2? Veinticinco más dos es veintisiete. El índice 27 no existe en el alfabeto y el programa explotará con un IndexError. Usted deberá usar su lógica matemática o condicionales if para hacer que, si la nueva posición pasa de 25, vuelva a empezar desde el 0.


---


Información Institucional sobre la Evaluación


Usted tiene en sus manos los planos. Elija inteligentemente sus proyectos obligatorios según la confianza que tenga en sus habilidades y el tiempo del que disponga. Si decide ir por los honores, la excelencia o el reto absoluto, organice su mente.


Escriba su código limpio. Comente las líneas difíciles. Utilice el comando cls en la consola constantemente para no abrumarse con la salida de datos. Escuche con detenimiento lo que su lector de pantalla le dicta en los errores. No hay respuestas correctas únicas en la programación; si su código resuelve el problema planteado siguiendo las reglas, el código es válido y es suyo.


Guarde sus archivos en la carpeta correspondiente. Cuando los termine, estará verdaderamente listo para la Semana 15: La Evaluación Final. Buena suerte.


Profesor: Diego R. Solano C. 

¿Te ha sido útil este artículo?

Lecturas del artículo: cargando...
Pulsa Enter aquí para leer los comentarios publicados por otros usuarios (0)

Aún no hay comentarios publicados en este artículo. Anímate a ser el primero en dejar uno.

Pulsa Enter aquí para ver los pasos y dejar un comentario nuevo

Cómo dejar un comentario desde tu computadora (JAWS, NVDA o Microsoft Narrator)

Al presionar el botón que aparece más abajo, se abrirá una nueva pestaña del navegador con el formulario oficial de comentarios de Google para esta publicación. El formulario se abre en una página separada para que funcione correctamente con tu lector de pantalla sin interferencias. Sigue estos pasos:

  • Paso 1: Presiona el botón de abajo. Una nueva pestaña se abrirá con el formulario de comentarios.
  • Paso 2: Espera a que la página cargue completamente. Tu lector de pantalla debería anunciar el título de la nueva pestaña automáticamente.
  • Paso 3: Presiona la tecla E para ir al primer cuadro de edición, que es donde debes escribir tu comentario.
  • Paso 4: Escribe tu comentario.
  • Paso 5: Presiona Tab para navegar hasta el botón Publicar y actívalo con Enter.
  • Paso 6: Si Google te pide iniciar sesión con tu cuenta de Google, sigue el proceso de inicio de sesión con Tab y Enter.
  • Paso 7 — Verificación de seguridad: Es posible que Google muestre una verificación de seguridad llamada CAPTCHA, que consiste en una casilla de verificación que dice "No soy un robot". Si aparece, presiona la tecla F para navegar hasta ese campo, luego presiona Espacio para marcarla. En algunos casos puede aparecer una prueba adicional con imágenes; si esto ocurre, sigue las instrucciones en pantalla que leerá tu lector de pantalla.
  • Paso 8 — Cerrar la ventana y regresar: Una vez que hayas enviado el comentario, la ventana de comentarios no se cerrará automáticamente ni regresará al blog por sí sola. Para regresar a la publicación, debes cerrar esa pestaña manualmente. Presiona la combinación de teclas Control + W para cerrar la pestaña activa. Al cerrarla, el navegador volverá automáticamente a la pestaña del blog donde estabas leyendo el artículo. Además, este blog detectará que cerraste la ventana y tu lector de pantalla anunciará que regresaste al artículo.
  • Moderación: Todos los comentarios son revisados antes de publicarse. Tu mensaje no aparecerá de forma inmediata.

Cómo dejar un comentario desde tu dispositivo móvil (TalkBack o VoiceOver)

Al tocar el botón que aparece más abajo, se abrirá una nueva página con el formulario oficial de comentarios de Google para esta publicación. Sigue estos pasos:

  • Paso 1: Toca el botón de abajo. Se abrirá una nueva pestaña con el formulario de comentarios.
  • Paso 2: Espera a que la página cargue por completo. Tu lector de pantalla anunciará el contenido nuevo.
  • Paso 3: Desliza el dedo hacia la derecha hasta encontrar el cuadro de texto para escribir. Tu lector de pantalla anunciará "campo de texto" o "área de edición".
  • Paso 4: Toca dos veces el cuadro de texto para activarlo y escribe tu comentario.
  • Paso 5: Desliza hacia la derecha hasta el botón Publicar y tócalo dos veces para enviar.
  • Paso 6: Si Google te pide iniciar sesión, desliza hacia la derecha para encontrar los campos de correo y contraseña y completa el proceso.
  • Paso 7 — Verificación de seguridad: Es posible que Google muestre una verificación de seguridad llamada CAPTCHA, que consiste en una casilla que dice "No soy un robot". Si aparece, desliza con el dedo hasta encontrarla y tócala dos veces para marcarla. En algunos casos puede aparecer una prueba con imágenes; si esto ocurre, tu lector de pantalla leerá las instrucciones de esa prueba para que puedas completarla.
  • Paso 8 — Cerrar la pestaña y regresar en Android: Una vez enviado el comentario, la pestaña no se cerrará sola. Para regresar al blog, toca el botón de pestañas en tu navegador (en Chrome es un número entre un cuadrado en la parte de abajo o arriba de la pantalla). Busca la pestaña de Comunidad Tiflotec y tócala dos veces para volver a ella. También puedes deslizar hacia arriba o a un lado la pestaña del formulario para cerrarla directamente.
  • Paso 8 — Cerrar la pestaña y regresar en iPhone o iPad: Una vez enviado el comentario, toca el botón de pestañas en Safari (son dos cuadrados superpuestos en la esquina inferior derecha de la pantalla). Verás todas las pestañas abiertas. Busca la de Comunidad Tiflotec y tócala para volver al artículo. Si quieres cerrar la pestaña del formulario, busca su vista previa y desliza hacia la izquierda hasta el botón Cerrar.
  • Moderación: Todos los comentarios son revisados antes de publicarse. Tu mensaje no aparecerá de forma inmediata.