Hola, estoy recién empezando en esto asique sepan disculpar mis errores. Necesito ayuda para armar un programa basico de python antes del sabado y dice asi:
Realice una función de nombre palabra_mas_repetida() que reciba como argumento una cadena cualquiera que representa un texto y devuelva la primera palabra que más veces aparece en el mismo (no debe diferenciar mayúsculas de minúsculas). La palabra debe devolverse siempre en minúscula.
Por favor alguien me puede ayudar??
hice este programa pero obviamente algo esta mal
def palabra_mas_repetida(s):
cont = []
palabras = s.split()
for palabra in palabras:
palabra = palabra.lower()
if palabra in cont:
cont[palabra] += 1
else:
cont[palabra] = 1
return
MOD: Etiquetas GeSHi.
Estás usando una lista cuando quieres usar un diccionario.
El código sería algo así (seguro puedes mejorarlo):
def palabra_mas_repetida(s):
cont = {} #diccionario vacio
palabras = s.lower().split(" ")
for palabra in palabras:
if cont.has_key(palabra):
cont[palabra] += 1
else:
cont[palabra] = 1
maxcount = sorted(cont.values())[-1] # maxcount = ultimo elemento de la lista ordenada (de menos a mayor) de los valores del dict
for clave, valor in cont.iteritems():
if valor == maxcount:
return clave
Por ejemplo, si usas:
print palabra_mas_repetida("hola hola hola si si no no no no hola no no no")
se imprimirá "no".
Espero te sirva.
Saludos!
hay muchas formas de hacerlo, depende de que te dejen usar! otra forma sería:
#-*- coding: utf -8 -*-
from collections import Counter
def palabra_mas_repetida(s):
palabras = s.split()
cuenta_palabras =Counter(palabras)
mas_usada= str(cuenta_palabras.most_common(1)[0][0]).lower()
print(mas_usada)
palabra_mas_repetida("hola ESTE es un texto de forma que ESTE está en mayúsculas" )
Si el problema es que me piden que sea un programa sencillo sin tener que importar nada. por ejemplo:
maxcount = sorted(cont.values())[-1]
no me dejan usar "sorted"
Cita de: py.cba en 4 Noviembre 2016, 15:17 PM
Si el problema es que me piden que sea un programa sencillo sin tener que importar nada. por ejemplo:
maxcount = sorted(cont.values())[-1]
no me dejan usar "sorted"
Sorted es solo para que ordene el listado de valores del diccionario (devuelve una lista).
Si no lo quieres usar, puedes usar el
for clave, valor in cont.iteritems(): para ir comparando los valores y tomar el mayor.
Por supuesto, de esa forma vas a necesitar recorrer todo el diccionario; pero te quedara un codigo simple y facil de entender.
Saludos!
Hola, algo simple se me ocurre:
palabras = "hola soy yo hola"
lista = list(map(lambda x: palabras.count(x), palabras.split()))
print(palabras.split()[lista.index(max(lista))])
Saludos!