Un problema, múltiples soluciones
Ahora que hemos avanzado bastante sobre la solución de nuestro primer programa, "Hola, Mundo!", es hora de reflexionar sobre cómo abordamos el problema y cómo lo resolvimos.
En el mundo de la programación, es común que un problema pueda tener múltiples soluciones. Cada solución puede ser diferente en términos de eficiencia, legibilidad, el mantenimiento y otros factores.
En este caso, el problema que abordamos fue bastante simple: saludar al usuario por su nombre. Sin embargo, la manera en la que lo podríamos haber resuelto podría haber variado significativamente.
El objetivo aquí no es tanto resolver el problema, sino demostrar y enfatizar que en programación a veces hay muchas maneras de resolver el mismo problema.
Hasta ahora, nos encontramos con el siguiente programa:
Que a partir de ahora transcribiremos en nuestra plataforma virtual de programación:
Y ejecutaremos en nuestra Terminal virtual:
¿Entendido? ¡Perfecto! Ahora, vamos a explorar algunas de las diferentes maneras en las que podríamos haber resuelto este problema.
Primero, simplificaremos el programa original para que sea más fácil de entender y luego exploraremos algunas alternativas para resolver el problema de saludar al usuario por su nombre.
Simplificando el programa original
El programa original del que partiremos para saludar al usuario por su nombre será el siguiente:
Cuya salida en la Terminal virtual será:
¿Por qué hicimos esto? Porque queremos que el programa sea más fácil de entender y analizar.
Pero al dividir la cadena de caracteres en dos líneas, podemos ver claramente que la primera línea imprime "Hola,"
y la segunda línea imprime el nombre del usuario almacenado en la variable nombre
. Esto no quedó muy estético.
Enfoque 1: Concatenación de cadenas
veamos cómo podemos mejorar este programa y también introducir una nueva característica al manejo de cadenas de caracteres.
¿Qué tal si queremos que el saludo y el nombre del usuario estén en la misma línea?
Podríamos hacer esto utilizando la concatenación de cadenas. Para ello, simplemente unimos con el operador de concatenación +
las dos cadenas de caracteres en una sola línea de código, como un solo argumento de una función print()
.
¡Para recordar!
Es importante recordar que el operador +
en este caso no es una suma per se. Obviamente no estamos sumando números, sino que estamos concatenando el nombre del usuario a la cadena de texto "Hola,"
. Y concatenar simplemente significa unir dos cadenas de caracteres en una sola cadena, una a continuación de la otra.
La salida en la Terminal será:
Aquí podemos observar un error estético menor: falta un espacio entre la coma y el nombre. ¿Cómo lo arreglo? Con intuición y sentido común:
La salida en la Terminal será:
¿Mejor, verdad? Ahora el saludo es gramaticalmente correcto. Simplemente agregamos un espacio después de la coma.
Con este mismo criterio es que agregamos un espacio entre el signo de interrogación y las comillas dobles en la pregunta al usuario.
¡¡Para recordar!!
La concatenación de cadenas es una técnica muy común en programación y es útil para combinar cadenas de texto de manera dinámica. En Python, puedes concatenar cadenas de caracteres, de izquierda a derecha, utilizando el operador +
la cantidad de veces que sea necesario para unir todas las cadenas que sean requeridas como si fuesen una sola cadena, aunque visualmente podrá tornarse poco prolijo y comprensible cuando la línea de código se alargue por demás.
Enfoque 2: Múltiples argumentos en la función print()
Es importante saber que algunas funciones, print()
entre ellas, pueden tomar múltiples argumentos. Recordemos que un argumento es una entrada a una función. Y si separas los argumentos de una función con una coma, puedes pasar no solo uno, sino dos, tres, cuatro, cinco, en adelante.
Con este concepto en mente, veamos cómo se vería nuestro programa si pasamos múltiples argumentos a la función print()
.
Cuidado, no te confundas. La primera coma está dentro de las comillas, lo cual es simplemente una cuestión gramatical. La segunda coma está fuera de las comillas, pero entre lo que ahora son dos argumentos separados para imprimir. El primer argumento es "Hola, "
y el segundo argumento es el nombre de la variable a la cual accederá el programa durante su ejecución para recuperar el nombre ingresado por el usuario e imprimirlo.
La salida en la Terminal será:
¡Ups! Demasiado espacio entre la coma y el nombre. ¿Por qué? Porque cuando pasas múltiples argumentos a print()
, automáticamente se inserta un espacio entre cada uno de ellos. Y esto ocurre porque print()
posee un parámetro optativo llamado sep
cuyo valor por defecto es un espacio en blanco. El objetivo de esta funcionalidad es poder separar los argumentos que se pasan a la función print()
con un espacio en blanco. y que no queden pegados unos a otros cuando son impresos.
Esto no era relevante antes porque estaba pasando un gran argumento para imprimir todo a la vez usando el operador de concatenación +
.
Para eliminar este espacio extra y obtener una respuesta gramaticalmente correcta, simplemente deberemos eliminar el espacio en blanco después de la coma y antes de cerrar las comillas dobles en el primer argumento:
Ahora hemos eliminado el espacio en blanco dejando la cadena de caracteres solamente como "Hola,"
.
La salida en la Terminal será:
¿Cuál de estos enfoques es mejor?
El segundo Este enfoque utiliza una función print con dos argumentos: "Hola, "
y el nombre de la variable. Es decir, que print()
toma dos argumentos y los imprime en la misma línea, uno después del otro, separados por un espacio en blanco.
El primer enfoque técnicamente utiliza un argumento pero que precisa ser procesado previamente en el sentido de que la computadora, al igual que al resolver un problema matemático, resolverá primero lo que está entre paréntesis y luego lo que está fuera de ellos. En este caso, la computadora primero concatena la cadena de texto "Hola, "
con el valor de la variable nombre
y luego pasa el resultado a la función print()
para imprimirlo como un único argumento. Y todo lo hace de manera dinámica en tiempo de ejecución, en la memoria de la computadora; no es el programador quien modifica el programa de manera directa.