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.
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.
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.
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.
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.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.