Operadores de Cadenas (Strings)

Es momento de regresar a dos operadores aritméticos que ya conoces muy bien: + y *. Hasta ahora los hemos visto trabajar con números (enteros y flotantes), pero en Python estos símbolos tienen una segunda función nativa: pueden manipular texto de una forma muy específica.

El Operador de Concatenación (+)

Cuando aplicas el signo + entre dos elementos de tipo string, este se transforma automáticamente en el operador de concatenación:

$$\text{string} + \text{string}$$

Su única función es pegar (fusionar) las cadenas para construir un solo texto unificado. Al igual que su hermano aritmético, puedes usarlo varias veces dentro de una misma línea de código y se procesará siguiendo la regla de asociatividad por la izquierda (de izquierda a derecha).

Las Dos Grandes Diferencias con la Suma Matemática

Para asegurar tus puntos en la certificación, memoriza estas dos reglas que diferencian la concatenación de la suma tradicional:

  1. No es conmutativo: En matemáticas, 2 + 3 es exactamente igual a 3 + 2. En cadenas de texto, el orden de los factores sí altera el producto. El texto "ab" + "ba" da como resultado "abba", mientras que "ba" + "ab" produce "baab". Son resultados totalmente distintos.
  2. Prohibido mezclar tipos: Para que el signo + actúe como concatenador, ambos argumentos deben ser estrictamente cadenas de texto. No puedes mezclar un string con un número. Intentar hacer "Goles: " + 3 provocará un error fulminante de tipo (TypeError).

Analizando el Código Interactuando con el Usuario

fnam = input("¿Me das tu nombre, por favor? ")
lnam = input("¿Me das tu apellido, por favor? ")
print("Gracias.")
print("\nTu nombre es " + fnam + " " + lnam + ".")

¿Por qué este enfoque es tan potente?

Si ejecutas este código e introduces Pedro y García, la última línea enlazará los textos de manera milimétrica y mostrará en la consola:

Tu nombre es Pedro García.

Nota de diseño: Usar el operador + para fusionar textos te ofrece un control absoluto y milimétrico sobre el formato de salida. A diferencia de pasar argumentos separados por comas en print() (que inyecta espacios en blanco obligatorios de forma automática), la concatenación une los caracteres exactamente en la posición que tú decidas. Fíjate cómo añadimos manualmente un espacio en blanco estático " " entre el nombre y el apellido, y pegamos el punto final . directamente al apellido sin dejar espacios intermedios.

Aquí tienes la adaptación de esta sección, donde el curso revela el comportamiento del operador * cuando interactúa con textos. Este concepto se conoce como replicación y es un recurso clásico que utiliza el Python Institute en los exámenes para evaluar tu atención al detalle y tu capacidad de predecir salidas en consola.

El Operador de Replicación (*)

El signo de asterisco (*), cuando se aplica entre una cadena de texto (str) y un número entero (int), cambia por completo su naturaleza aritmética y se transforma en el operador de la replicación:

Su función es repetir (replicar) la cadena de texto el número exacto de veces que le indique el número entero. A diferencia de la concatenación, este operador sigue siendo conmutativo, lo que significa que el orden no altera el resultado: da exactamente igual si pones el número a la izquierda o a la derecha del texto.

Analicemos estos ejemplos clave para la certificación:

  • "James" * 3 da como resultado: "JamesJamesJames"
  • 3 * "an" da como resultado: "ananan"

⚠️ La trampa matemática del PCEP: Presta muchísima atención a las cadenas que contienen dígitos numéricos dentro de sus comillas.

  • "2" * 5 (o 5 * "2") da como resultado "22222" (una cadena de cinco doses pegados), ¡NO el número entero 10! Esto ocurre porque el operando de la izquierda es un texto, no un número.

Multiplicar por Cero o Negativos

¿Qué pasa si intentas replicar una cadena usando un número menor o igual a cero?

  • text * 0 o text * -5 no provoca ningún error.
  • Python genera como resultado una cadena vacía (""), la cual no tiene caracteres y no muestra nada en la pantalla.

Aquí tienes la adaptación de esta sección de cierre, donde el curso nos muestra el camino de vuelta: cómo transformar números en texto usando la función str(), permitiéndonos realizar concatenaciones ultraprecisas con los resultados de nuestras fórmulas matemáticas.

Conversión Inversa: La Función str()

Ya dominas el uso de las funciones int() y float() para transformar una cadena de texto en un número. Sin embargo, este tipo de conversión no es una calle de una sola vía. En Python, también puedes convertir un número en una cadena de texto.

La función encargada de realizar esta magia es str(). Para ser honestos, esta función puede hacer mucho más que simplemente transformar números en strings (puede convertir listas, diccionarios y objetos complejos), pero ese terreno lo exploraremos más adelante.

El Triángulo Rectángulo con Concatenación Pura

Volvamos a mirar nuestro programa del teorema de Pitágoras. El curso lo ha modificado sutilmente para mostrar el poder de str() en el formateo de salida:

leg_a = float(input("Ingresa la longitud del primer cateto: "))
leg_b = float(input("Ingresa la longitud del segundo cateto: "))

# Convertimos el resultado matemático a str para poder usar el signo +
print("La longitud de la hipotenusa es " + str((leg_a**2 + leg_b**2) ** .5))

🔍 ¿Qué está pasando en la última línea?

  1. Python resuelve primero la compleja expresión matemática interna: (leg_a2 + leg_b2) .5. Supongamos que el resultado es el número flotante 5.0.
  2. Inmediatamente, la función str(5.0) atrapa ese número, le coloca comillas invisibles y lo transforma en el texto "5.0".
  3. Ahora que el resultado es un string, el operador + puede actuar legítimamente como concatenador, uniendo "La longitud de la hipotenusa es " con "5.0".

¿La ventaja? Nos olvidamos por completo de las comas de print() y entregamos a la consola una única cadena de texto compacta, perfectamente unida y bajo nuestro estricto control posicional.