[ Foro de Python ]

Resolver ejercicio

01-Sep-2021 03:02
Invitado (PitMG)
4 Respuestas

Buenas tardes. Llevo poco estudiando el lenguaje Python y tengo que resolver el siguiente ejercicio:


Escribe una función que analice una cadena de texto. La función debe contar
# las palabras contenidas en el texto y devolverlo como un diccionario, por
# ejemplo: la cadena de texto "una computadora gris y una mesa gris" debe devolver
# el siguiente diccionario:
# {
#     "una": 2,
#     "computadora": 1,
#     "gris": 2,
#     "mesa": 1,
#     "y": 1
# }
#
# Ya que las palabras "una" y "gris" se repiten dos veces, mientras que las  
# demás palabras aparecen sólo una vez. Si la cadena está vacía se devuelve un
# diccionario vacío.
#
# La función debe convertir todo el texto a minúsculas, de tal forma que las
# palabras "lapiz" y "LAPIZ" son la misma palabra.
#
# La función también puede recibir argumentos nombrados opcionales donde cada
# uno es una variable de tipo booleana que indica:
#   - Si la variable es True entonces ese valor se va a agrupar en "GRUPO"
#   - si la variable es False entonces ese valor se va a omitir en el conteo
# de palabras. Por ejemplo: la cadena de texto "una computadora gris y UNA MESA ROJA"
# y los argumentos nombrados y=False, gris=True, roja=True debe devolver el
# diccionario:
# {
#     "una": 2,
#     "computadora": 1,
#     "mesa": 1,
#     "GRUPO": 2
# }
# En este ejemplo, la palabra "y" se omitió de la salida, ya que el argumento
# nombrado y=False indica que se debe omitir del análisis. Además la palabra
# "GRUPO" contiene el número de palabras donde el argumento opcional tiene el
# valor de True, en este caso gris=True y roja=True.
#
# Por ejemplo, la cadena de texto "el perro y el gato viejo entraron en el cuarto viejo y oscuro"
# con los argumentos y=False, perro=True, gato=True, la salida debe ser el
# diccionario:
# {
#     'el': 3,
#     'GRUPO': 2,
#     'viejo': 2,
#     'entraron': 1,
#     'en': 1,
#     'cuarto': 1,
#     'oscuro': 1
# }


Solo pude resolver la primera parte, pero ya no sé que agregar para resolver el ejercicio completo.

def registra_usuario(a = '', b = '', c = '', d = '', e = '', f = '', g = ''):
 
       palabras = a + " " + b + " " + c + " " + d + " " + e + " " + f + " " + g
       palabras1 = palabras.lower()
       palabras2 = palabras1.split()
       d ={k:palabras1.count(k) for k in list(set(palabras2))}
       print(d)


registra_usuario('Una', 'computadora', 'gris', 'y', 'una', 'mesa', 'gris')
registra_usuario('Una', 'computadora', 'GRIS', 'y', 'una', 'mesa', 'gris')
registra_usuario('Una', 'computadora', 'y', 'una', 'mesa', 'gris')


06-Sep-2021 10:22
Invitado (monchi)

hola pit

espero te sirva el código
https://www.online-ide.com/7wOapijJR3

suerte ;-)


06-Sep-2021 20:41
Invitado (monchi)

hola pit

quitando lo superfluo de 100 se queda en 30 líneas
https://www.online-ide.com/nx4675OdtX

saludos ;-)


07-Sep-2021 09:07
Invitado (monchi)

hola pit

estoy aprendiendo y este es mi sexto programa en python
espero que esta sea la definitiva, 25 líneas

https://www.online-ide.com/DtaMJhvYG9

saludos ;-)





07-Sep-2021 10:47
Invitado (monchi)

hola pit

aplicando compresión se queda en 20 líneas, pero queda más claro en el de 25

https://www.online-ide.com/lSZo8kzmrq

saludos






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)