Mi primer programa en Python, parte 2
Bien. Hace una semana compartí el enunciado del primer programa que implementé cuando decidí retomar CS50: Introduction to Computer Science with Python. En resumen, si el usuario escribe "HOLA" en mayúsculas, el programa debe devolver "hola" en minúsculas.
Pero, ¿dónde el usuario puede escribir "HOLA" en mayúsculas, y qué significa que el programa le va a "devolver 'hola'" en minúsculas ?
Bueno, resulta que hay algo que se llama "terminal". Si eres un usuario Windows, en la barra de búsqueda puedes escribir "cmd" o "powershell". A continuación, una ventana de fondo negro con letras blancas se va abrir, y va a decir algo como "Microsoft Windows, Microsoft Corporation, todos los derechos reservados", etcétera. A partir de esta ventana puedes ejecutar comandos que normalmente ejecutas con tu mouse, porque usas la interfaz gráfica de Windows para crear una nueva carpeta (por un ejemplo) en vez de crearla vía la terminal con un comando.
La magia de VSCode, y de muchos otros entornos de trabajo para desarrolladores, es que puedes tener una visualización de conjunto. Puedes ver la arborescencia de tus carpetas en el sistema de tu computadora, puedes abrir archivos de texto, .md, etc. También tienes acceso a la famosa terminal. Es a través de esta terminal que vas a ejecutar tu programa Indoor Voice, que has escrito en un archivo que probablemente se llama indoor.py (.py es la terminación para los archivos de Python). Ejecutar un archivo python es como hacer doble click en un archivo Word. Una vez que escribas "python indoor.py" en la terminal y presiones Enter, el programa se ejecutará y le pedirá input al usuario. Dependiendo del input del usuario, el programa devolverá una respuesta.
Spoiler alert: voy a dar la solución del programa, así que si quieres realizar el curso por ti mismo, es mejor que cierres los ojos 😅
Mi ojetivo con este post no es enseñar las líneas generales de la programación. No me considero una experta en el tema. Yo solo me sirvo de la programación para resolver problemas en mi trabajo, y optimizar procesos. Es por ello que no voy a adentrarme en conceptos teóricos básicos, sino que me voy a enfocar en decorticar mi solución, para explicar con mis palabras la manera en que abordé el problema.
El programa que he escrito en Python para convertir un texto de mayúsculas a minúsculas es el siguiente:
print(input().lower())
Nota laboral
Python tiene una documentación extensa sobre cómo utilizarlo. Este lenguaje ha evolucionado con el paso del tiempo, por lo que visitar la documentación en caso de que tengas dudas, siempre será una buena idea. Es común en el mundo de la programación bromear acerca de la documentación, hay gente que la lee y gente que no. Yo te recomiendo que busques entender por tus propios medios antes de hacer una pregunta a una persona, que tal vez le podrías hacer a Google. ChatGPT es un recurso valioso para entender conceptos abstractos (no olvides de verificar las fuentes ya que chatGPT se puede equivocar).
Tal vez te preguntarás: ¿por qué perder tiempo en buscar por mis propios medios, antes de preguntarle a alguien más experimentado que yo?
Bueno, esta recomendación la doy desde un contexto laboral. Recuerda que cuando te contratan en una empresa, te pagan por aportar valor. Por resolver problemas. El hecho de que le preguntes a alguien cómo resolver tu problema implica que estás disminuyendo la productividad de esa otra persona. Esto no quiere decir que debes encerrarte sola en una esquina a intentar resolver tus problemas sin interactuar con los demás. Todo lo contrario. Mi consejo viene desde la experiencia, y las observaciones que hice mientras estudiaba informática y mientras trabajo actualmente en la empresa.
No tiene nada de malo pedir ayuda, sobre todo si tienes un puesto junior. Pero es muy importante que entiendas los problemas que estas resolviendo, o los procesos que estas optimizando. Luego, el siguiente paso es buscar soluciones: tu cerebro, Google y ChatGPT son tus mejores aliados. Tal vez Youtube, si necesites un poco de interacción humana. Cuando ya no te queden recursos, y hayas agotado todas las opciones, puedes considerar pedirle ayuda a un colega.
Otra estrategia es hablar de manera informal sobre el problema que estás intentando resolver en un break que te tomes con un colega, y discutir sobre tu aproximación al problema, la estrategia, o cómo crees que deberías resolverlo. Este proceso es muy formativo, y puede darte ideas antes de adentrarte en los detalles de la resolución. Sin embargo, la persona que debe ejecutar la solución paso a paso, la persona responsable del problema, eres tú.
Indoor Voice, paso a paso
Ok, luego de este paréntesis de vida laboral, volvamos a Indoor Voice. Hay tres funciones en este programa. Vamos a verlas una a una:
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).
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.
.lower(): por último, tenemos la función lower. Si te fijas bien, esta tiene un punto delante de la palabra "lower", a diferencia de las otras dos funciones, print() e input(). Esto se debe a que .lower() es una función que solo se puede aplicar a la clase str(cadena de caracteres. En términos de mortales: una frase, una oración). Es por ello que se denomina método. Las primeras dos, son funciones globales, que pueden ser llamadas desde cualquier parte del programa.
Entonces, ¿qué estoy haciendo al escribir print(input().lower()) en mi programa indoor.py ?
Bueno, estoy implementando un programa que transforma en minúsculas la cadena de caracteres (frase) que el usuario escribe en la terminal, y luego muestra esta cadena transformada en la terminal. Parece demasiado simple, ¿verdad?
Esto se debe a que Python cuenta con varias librerías que contienen funciones escritas por otras personas antes que nosotros, y de las que nos podemos apoyar para escribir nuestros programas. Creo que era Newton el que decía que los conocimientos que creamos los producimos al apoyarnos en los hombros de nuestros antepasados (si no fue Newton, por favor corrígeme porque hoy no quiero googlear ni preguntarle a ChatGPT 😆). Si las funciones print(), input() y .lower() no existieran, tendríamos que escribirlas paso a paso para lograr convertir "HOLA" en "hola".
¿De qué te sirve saber todo esto?
Creo que esto le da otro matiz al arte de la programación. A medida que los años pasan y las tecnologías evolucionan, te puedes dar cuenta de que hay varios aspectos a considerar al trabajar en áreas tecnológicas: el valor que aportas no solo viene de qué tan lógico seas al resolver tus problemas. Tu capacidad de afinar la estrategia de resolución, así como tu capacidad de saber buscar referencias en internet (googlea prompt engineer si quieres saber más al respecto) son cualidades valiosas al momento de trabajar en una empresa de IT. Por último, pero no menos importante, la capacidad de intercambiar ideas con tus colegas, e integrar sus aportes en tus procesos, también añaden valor a tu perfil profesional.
Ahora ya sabes cómo convertir HOLA en hola, utilizando tres funciones en Python.
¿Qué tal?