Cantidad de veces que aparece letra con porcentaje en Python - Programación

Python: conteo y porcentaje de letras en cadena

Hoy vamos a ver un ejercicio de programación en Python sobre conteo de letras en una cadena.

Lo que tenemos que hacer es contar cuántas veces aparece una letra en una cadena y luego mostrar la letra, un asterisco por cada ocurrencia y el porcentaje que ocupa esa letra dentro de la cadena.

Por poner un ejemplo, al invocar a la función como se ve a continuación:

imprimir_porcentaje_letras("Hola mundo. Me gusta mucho programar en Python y publicarlo en mi blog: https://parzibyte.me/blog")

La salida sería la siguiente:

H * 1.0 %
o ******** 8.2 %
l ***** 5.2 %
a ****** 6.2 %
  ************* 13.4 %
m ***** 5.2 %
u **** 4.1 %
n **** 4.1 %
d * 1.0 %
. ** 2.1 %
M * 1.0 %
e ***** 5.2 %
g **** 4.1 %
s ** 2.1 %
t ***** 5.2 %
c ** 2.1 %
h *** 3.1 %
p **** 4.1 %
r ***** 5.2 %
P * 1.0 %
y *** 3.1 %
b **** 4.1 %
i *** 3.1 %
: ** 2.1 %
/ *** 3.1 %
z * 1.0 %

Si te fijas, también cuenta cuántas veces aparece el carácter del espacio, dos puntos, barra, etcétera. Muestra el conteo de las letras junto con su porcentaje y una cantidad de asteriscos.

Explicación del algoritmo

Contando letras

Para contar el porcentaje de aparición de letras en una cadena con Python vamos a usar un diccionario, usando la letra como clave. Entonces la clave será la letra, y el valor será otro diccionario que tendrá el conteo.

Recorremos la cadena o frase letra por letra. En cada iteración comprobamos si el carácter existe en el diccionario; en caso de que no entonces lo agregamos con un conteo de 0 por defecto.

Después de hacer la comparación anterior aumentamos el conteo del diccionario en esa clave. Básicamente si la letra no existe la agregamos, y si existe le aumentamos el conteo.

Calculando porcentaje

Hasta ahora ya tenemos el diccionario con cada letra y la cantidad de veces que aparece. Lo que haremos a continuación será recorrer el diccionario y calcular el porcentaje.

La fórmula es:

Porcentaje = (cantidad de veces que aparece la letra * 100) / cantidad total de letras

Finalmente el diccionario tendrá como clave la letra, y como valor el conteo y porcentaje. Ya solo falta imprimir.

Porcentaje de ocurrencia de letras en frase con Python

Es momento de pasar al código. Es importante mencionar que la función puede ser modificada a tu gusto, y que por ejemplo podrías hacer que solo devuelva el diccionario para que lo imprimas en otro lugar.

Comenzamos contando las letras:

diccionario = {}
for letra in cadena:
    if not letra in diccionario:
        diccionario[letra] = {
            "conteo": 0,
        }
    diccionario[letra]["conteo"] += 1

Después recorremos el diccionario y vamos calculando el porcentaje que representa la letra:

for letra in diccionario:
    diccionario[letra]["porcentaje"] = (
        diccionario[letra]["conteo"]*100)/cantidad_letras

Finalmente volvemos a iterar el diccionario e imprimimos lo que el ejercicio requiere. Por cierto, para imprimir los asteriscos simplemente hacemos un ciclo for e imprimimos un asterisco indicando el end en "" para que no imprima salto de línea.

for letra in diccionario:
    print(letra, end=" ")
    for i in range(diccionario[letra]["conteo"]):
        print("*", end="")
    porcentaje_redondeado = round(diccionario[letra]["porcentaje"], 1)
    print(f" {porcentaje_redondeado} %")

Nota: estoy usando round para redondear el porcentaje. Puedes modificarlo si quieres mostrarlo completo o con más decimales.

Poniendo todo junto

Cantidad de veces que aparece letra con porcentaje en Python - Programación
Cantidad de veces que aparece letra con porcentaje en Python – Programación

La función y su modo de uso queda así:

"""
    https://parzibyte.me/blog
"""
def imprimir_porcentaje_letras(cadena):
    diccionario = {}
    for letra in cadena:
        if not letra in diccionario:
            diccionario[letra] = {
                "conteo": 0,
            }
        diccionario[letra]["conteo"] += 1
    cantidad_letras = len(cadena)
    for letra in diccionario:
        diccionario[letra]["porcentaje"] = (
            diccionario[letra]["conteo"]*100)/cantidad_letras
    for letra in diccionario:
        print(letra, end=" ")
        for i in range(diccionario[letra]["conteo"]):
            print("*", end="")
        porcentaje_redondeado = round(diccionario[letra]["porcentaje"], 1)
        print(f" {porcentaje_redondeado} %")


imprimir_porcentaje_letras("Hola mundo. Me gusta mucho programar en Python y publicarlo en mi blog: https://parzibyte.me/blog")

De este modo podemos contar la cantidad de veces que aparece una letra en una oración, indicar ese conteo con asteriscos y también mostrar el porcentaje.

Si quieres aprender Python te recomiendo leer otras entradas de este lenguaje en mi blog.

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.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *