Expandir cada letra de una cadena con Python - Descomprimir cadena multiplicando carácter por número

Python: expandir letras de cadena según número

Siguiendo con los ejercicios de programación en Python vamos a ver cómo descomprimir o expandir cada letra de una cadena según el número que está junto a ella.

Por ejemplo, si tenemos la siguiente cadena formada por pares de letras y números en donde cada número indica las veces que un carácter debe expandirse:

a1e4o6z9

Al expandirla debe aparecer lo siguiente:

aeeeeoooooozzzzzzzzz

Básicamente estamos descomprimiendo la cadena, justamente lo contrario a cuando agrupamos las letras junto con su conteo haciendo un tipo de resumen.

Explicación del algoritmo

Las reglas dicen que el número solo irá del 1 al 9, por lo que podemos estar seguros de que los números serán solo de un dígito.

Al inicio de todo declaramos una cadena vacía que tendrá el resultado.

Con esto podemos recorrer la cadena “de 2 en 2” recortándola, y en cada iteración obtendríamos una letra junto con el número que debe repetirse.

Por ejemplo, si tenemos a1e4o6z9 en el primer paso tendríamos a1, en el segundo e4 y así sucesivamente; todo en pares.

Entonces ya tenemos el par, en la posición 0 tenemos a la letra y en la 1 al número de veces que se repite.

Extraemos cada cosa, multiplicamos la letra por el número (ya convertido a entero) y concatenamos el resultado en la cadena que declaramos al inicio.

Al final ya habremos expandido la cadena, colocando cada carácter o letra la cantidad de veces que lo indica el número a su derecha.

Expandir letras de cadena con Python

Vayamos al código. Lo he encerrado en una función que recibe la cadena que tiene las letras “comprimidas” y devuelve la cadena expandiendo cada una de sus letras:

En la línea 2 declaramos la cadena que tendrá el resultado. Luego usamos range para iterar la cadena en pasos de 2 en 2, es decir, primero vamos en 0, luego 2, 4, hasta la longitud de la cadena.

Más adelante en la línea 6 cortamos la cadena desde el índice hasta el índice + 2, lo que nos dará el par que necesitamos.

Extraemos los valores en la línea 7 y 8 convirtiendo lo necesario, expandimos la letra según el número en la línea 10 y agregamos al resultado en la línea 12.

Poniendo todo junto

El código completo junto con un ejemplo queda como se ve a continuación:

La salida es la siguiente para este ejemplo:

Expandir cada letra de una cadena con Python - Descomprimir cadena multiplicando carácter por número
Expandir cada letra de una cadena con Python – Descomprimir cadena multiplicando carácter por número

Recuerda que por el momento esto solo funciona con números de un dígito, pero con las modificaciones necesarias podría funcionar con más números sin ningún problema.

Por aquí te dejo más tutoriales de Python.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario