elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  programa en python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: programa en python  (Leído 1,532 veces)
py.cba

Desconectado Desconectado

Mensajes: 3


Ver Perfil
programa en python
« en: 4 Noviembre 2016, 02:24 »

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
Código
  1. def palabra_mas_repetida(s):
  2.  cont = []
  3.  palabras = s.split()
  4.  for palabra in palabras:
  5.    palabra = palabra.lower()
  6.    if palabra in cont:
  7.      cont[palabra] += 1
  8.    else:
  9.      cont[palabra] = 1
  10.  return

MOD: Etiquetas GeSHi.


« Última modificación: 4 Noviembre 2016, 05:20 por MCKSys Argentina » En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.849


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: programa en python
« Respuesta #1 en: 4 Noviembre 2016, 05:40 »

Estás usando una lista cuando quieres usar un diccionario.
El código sería algo así (seguro puedes mejorarlo):

Código
  1. def palabra_mas_repetida(s):
  2.    cont = {} #diccionario vacio
  3.    palabras = s.lower().split(" ")
  4.    for palabra in palabras:
  5.        if cont.has_key(palabra):
  6.          cont[palabra] += 1
  7.        else:
  8.          cont[palabra] = 1
  9.    maxcount = sorted(cont.values())[-1] # maxcount = ultimo elemento de la lista ordenada (de menos a mayor) de los valores del dict
  10.    for clave, valor in cont.iteritems():
  11.        if valor == maxcount:
  12.            return clave
  13.  

Por ejemplo, si usas:
Código
  1. print palabra_mas_repetida("hola hola hola si si no no no no hola no no no")
  2.  

se imprimirá "no".

Espero te sirva.

Saludos!


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

tincopasan


Desconectado Desconectado

Mensajes: 1.225

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: programa en python
« Respuesta #2 en: 4 Noviembre 2016, 08:32 »

hay muchas formas de hacerlo, depende de que te dejen usar! otra forma sería:
Código
  1. #-*- coding: utf -8 -*-
  2. from collections import Counter
  3. def palabra_mas_repetida(s):
  4.    palabras = s.split()
  5.    cuenta_palabras =Counter(palabras)
  6.    mas_usada= str(cuenta_palabras.most_common(1)[0][0]).lower()
  7.    print(mas_usada)
  8.  
  9. palabra_mas_repetida("hola ESTE es un texto de forma que ESTE está en mayúsculas" )
  10.  
  11.  
En línea

py.cba

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: programa en python
« Respuesta #3 en: 4 Noviembre 2016, 15:17 »

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"
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.849


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: programa en python
« Respuesta #4 en: 4 Noviembre 2016, 17:50 »

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!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Once

Desconectado Desconectado

Mensajes: 120


Ver Perfil WWW
Re: programa en python
« Respuesta #5 en: 5 Noviembre 2016, 03:52 »

Hola, algo simple se me ocurre:

Código
  1. palabras = "hola soy yo hola"
  2.  
  3. lista = list(map(lambda x: palabras.count(x), palabras.split()))
  4. print(palabras.split()[lista.index(max(lista))])
  5.  
  6.  

Saludos!
« Última modificación: 5 Noviembre 2016, 04:16 por Once » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROGRAMA EN PYTHON
Scripting
D@V1D94 2 4,253 Último mensaje 31 Enero 2012, 20:30
por D@V1D94
[Python/Tk]Mi Programa se ríe de mi
Scripting
AdeLax 2 1,585 Último mensaje 11 Agosto 2013, 12:19
por AdeLax
Problema programa Python
Scripting
Akendore 4 1,567 Último mensaje 7 Septiembre 2015, 19:33
por Akendore
Programa port knowking Python
Scripting
jd3re3 2 1,030 Último mensaje 1 Enero 2017, 11:03
por Kapunk
Programa python
Scripting
santiago torres 2 818 Último mensaje 10 Marzo 2017, 13:20
por Orubatosu
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines