Resolver problemitas para resolver problemotas

Programar es como armar un rompecabezas. Cuando tienes un proyecto de gran envergadura como "crear una aplicación para repatir comida" hay muchos parámetros en juego. Por citar algunos: la geolocalización del restaurante, los platos disponibles, el plato del día, la geolocalización de los repartidores (en directo), la geolocalización de los clientes, la creación de perfil para cada cliente, la creación de perfil para cada restaurante, los métodos de pago, el pago per se.

Y esto es sólo para nombrar los parámetros esenciales. Cada uno de ellos conlleva procesos a realizar "detrás de cámara". Aunque sepamos la complejidad que hay detrás de una aplicación de comida, esto no quiere decir que los programadores desarrollen todas las funcionalidades al mismo tiempo. O bueno, quizas sí. Pero trabajar en múltiples funcionalidades implica que estamos hablando de una empresa sólida, con varios equipos de trabajo, donde cada equipo se dedica a desarrollar una sola funcionalidad.

Si abstraemos esta información y reducimos la escala a una sola persona que está aprendiendo a programar, el proceso se simplifica aún más. Algo que me encanta del mundo de las computadoras es esta capacidad que tenemos los informáticos para identificar la unidad mínima de trabajo, y empezar a construir "el edificio" ladrillo a ladrillo. Lego a lego. Como un rompecabezas.

Asi empecé yo a principios de año a abordar mi aprendizaje de Python. Luego de tres años de alternance donde aprendí mucha información condensada en poco tiempo (en este post explico el proceso, y en este otro explico por qué decidí apropiarme de Python), llegó el momento de apropiarme de un solo lenguaje con calma. De esta manera, puedo empezar a resolver problemas de manera más eficiente en el trabajo, y en mi vida cotidiana.

El problema que voy a explicar hoy es sencillo. Se trata de reemplazar los espacios de una oración por tres puntos suspensivos. Y lo mejor de todo es que en Python, existe una función para ello. Vamos a ver a detalle el enunciado del problema, así como la resolución que implementé.

Playback speed - CS50P

El enunciado del problema traducido al español dice así:

"Algunas personas tienen la costumbre de dar conferencias hablando muy deprisa, y estaría bien ralentizarlas, a la velocidad de reproducción de 0,75 de YouTube, o incluso haciendo que hagan pausas entre palabras.

En un archivo llamado playback.py, implementa un programa en Python que pida al usuario que introduzca datos y luego los extraiga, sustituyendo cada espacio por ... (es decir, tres puntos)."

La resolución a continuación:

print(input().replace(" ", "..."))

La ventaja de Python es que muy inglés-friendly. Con tener algunas nociones básicas del idioma es suficiente para entender la solución que propuse. Aun así, te propongo decorticarla, paso a paso. Voy a empezar de la función más interna a la función mas externa. Una vez que lo explique espero que se entienda mejor esta noción de interno-externo.

replace(" ", "...")

Esta es la función principal. Aquí estamos indicando reemplazar el primer argumento que se encuentra entre comillas (un espacio en blanco) por el segundo argumento, que son los tres puntos suspensivos.

input()

Esta función se utiliza para recibir datos del usuario. Esto quiere que decir que el programa se detiene y espera a que el usuario escriba alguna palabra, frase, o que presione Enter.

print()

Esta función se utiliza para mostrar información en la pantalla. Tiene paréntesis ya que le puedes pasar argumentos (preguntale a ChatGPT qué significa pasarle argumentos a una función). A medida que avanzas en la programación, te darás cuenta de la utilidad de esta función, no importa el lenguaje en el que programes. Es muy útil para debugging(1), porque te muestra en la terminal lo que le pidas. Por ejemplo, cuando empiezas a realizar funciones más complejas, es muy útil imprimir en la pantalla el resultado de tu función, para comprobar si tu función resuelve el problema que necesitas.

Hoy estoy en una etapa más avanzada del curso CS50P. Y aunque los programas siguen siendo sencillos, estoy empezando a anidar varias funciones en un solo programa. Por ejemplo, el problema en el que trabajo actualmente tiene aproximadamente 6 funciones, pero hay una de ellas que necesita resolver un problemita con conchitas de mango(2). Hace tres semanas que intento resolver esta función, y todavía no lo logro. Ojo, al aprendizaje de la programación en Python solo le dedico 2 a 4 horas por semana. Esto influye en la velocidad del aprendizaje.


Bueno, te preguntarás para qué te cuento todo esto. Primero, porque creo que en el mundo en que vivimos, todos deberíamos tener nociones básicas de computadoras y programación. Un nivel mínimo de alfabetización informática. Segundo, porque si transpones la resolución del problema Playback Speed a problemas de la vida cotidiana, tal vez empieces a ver los datos a tu alrededor de otra manera, y a organizarlos de una manera más eficiente.

Ordenar y categorizar la información toma tiempo, y a veces da flojera. Pero, ¿te imaginas si cada vez que regresas de viaje, te tomaras el tiempo de organizar las fotos, borrar las que salieron mal, e imprimir las que te gustaron y pegarlas en un álbum de recuerdos?

Ahorrarías espacio en tu teléfono, y al final obtendrías como resultado un resumen de lo lindo que estuvo tu viaje. Y así con todo.

(1) un "bug" es un defecto que hace que tu programa no funcione bien. El verbo "debug" en inglés se refiere a limpiar tu programa de esos errorcitos que hacen que no funcione.

(2) una concha de mango es una expresión que aprendí en Venezuela para designar problemas que parecen "estar ahí" de forma inocente, pero que han sido pensados para confundirte y ponerte a prueba.

Subscribe to cachapa frita

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe