Python - letra más común en cadena

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 8 puestos en Python (en relación al último mes)
Gráfica de Python

letra más común en cadena

Publicado por Jenny (1 intervención) el 21/04/2021 06:21:37
Hola! estoy teniendo un problema con uno de mis códigos, estoy intentando encontrar cual es la letra más comun en una cadena bajo esta descripción :
Cree una función que reciba una cadena (str) que será analizada, y que retorne otra cadena (str) que contenga la letra más común en la cadena inicial.

Para su facilidad las cadenas que usted recibirá solo contendrán letras mayúsculas y no tendrán tildes o acentos. No obstante, estas pueden tener espacios, puntos y comas.

En caso de que haya 2 letras con la misma cantidad de apariciones, debe retornar la que sea alfabéticamente posterior.


----> El código que utilizo a continuación no me funciona. alguien me puede indicar como corregirlo? Gracias!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def letra_mas_comun(cadena: str)->str:
    letra_comun = ""
    ocurrencias = 0
    mayor_ocurrencia= 0
 
    for letra in cadena:
        ocurrencias = cadena.count(letra)
        if ocurrencias > mayor_ocurrencia:
            mayor_ocurrencia = ocurrencias
            letra_comun = letra
        else:
            mayor_ocurrencia = 0
 
    return letra_comun
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.689
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

letra más común en cadena

Publicado por tincopasan (789 intervenciones) el 21/04/2021 08:55:40
Hay muchas formas de hacer esto, no te puedo corregir tu código porque no se me ocurre como hacerlo según tu lógica, pero te muestro una forma de como lo haría con diccionarios y comprensión de listas, que espero ya hayas visto .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#-*- coding: utf -8 -*-
 
def letra_mas_comun(cadena):
    #reemplazamos espacios, comas y puntos por nada así no molestan
    cadena = cadena.replace(" ","").replace(",","").replace(".","")
 
    dic={}
    #llenamos un diccionario con las letras y sus apariciones
    for letra in cadena:
        ocurrencias = cadena.count(letra)
        dic[letra]=ocurrencias
    #obtenemos el valor mayor del diccionario
    mayor = dic[max(dic, key = dic.get)]
    #creamos una lista con tuplas de todas las letras iguales al valor mayor
    lista = [(k,v) for k,v in dic.items() if v == mayor]
    #devolvemos el primer elemento de la última tupla
    letra = sorted(lista)[-1][0]
    return letra
 
valores = letra_mas_comun('EL QUE NO CORRE VUELA')
print(f"La letra con mayor frecuencia ordenada alfabéticamente es la: {valores}")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar