python

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:

def expandir(datos):
    salida = ""
    # Hacer un ciclo "de 2 en 2", es decir, vamos en 0, 2, 4, 6, etcétera
    for i in range(0, len(datos), 2):
        # Extraer la base y cantidad
        par = datos[i:i+2]
        letra = par[0]
        cantidad = int(par[1])
        # Expandimos la base multiplicando la cadena
        letra_expandida = letra * cantidad
        # La agregamos al resultado final
        salida += letra_expandida
    return salida


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:

def expandir(datos):
    salida = ""
    # Hacer un ciclo "de 2 en 2", es decir, vamos en 0, 2, 4, 6, etcétera
    for i in range(0, len(datos), 2):
        # Extraer la base y cantidad
        par = datos[i:i+2]
        letra = par[0]
        cantidad = int(par[1])
        # Expandimos la base multiplicando la cadena
        letra_expandida = letra * cantidad
        # La agregamos al resultado final
        salida += letra_expandida
    return salida


print(expandir("a1e4o6z9"))

La salida es la siguiente para este ejemplo:

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

4 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

4 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.