Ayuda con ejercicio en python

Iniciado por Panic0, 9 Enero 2021, 12:33 PM

0 Miembros y 1 Visitante están viendo este tema.

Panic0

Hola,ayer me mandaron a hacer un código el cual se encargue de hacer una cierta cantidad de tareas.

La primera parte del código ya la hice y quedo,lo que no puedo hacer es la segunda parte.La cual me piden hacer el mismo código solo que esta ves usando clases,ya trate de hacerlo muchas veces pero no me sale.

Seria excelente si me podrían dar algún tipo de pista o algo que me ayude a resolver este problema

Código:


poema           =  "El unicornio blanco se ve negro a la distancia por que la noche es oscura. Mientras tanto,el caballo blanco del comisario come pasto cansinamente al lado del gallinero lleno de patos."

sep_frases      =  "."
sep_palabras   =  " "


lista_frases     =  []
lista_palabras  =  []

lista_frases     = poema.split(sep_frases)

cant_frases    = len(poema.split(sep_frases))
cant_palabras = len(poema.split(sep_palabras))

lista_palabras  = poema.split(sep_palabras)

cant_letras     = 0
for palabra in lista_palabras:
    cant_letras = cant_letras + len(palabra)

print(poema)
print("La cantidad de frases ", cant_frases)
print("La cantidad de palabras es", cant_palabras)
print(f"Este poema tiene {cant_letras} letras")


Muchas gracias de antemano.  ;)
Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.

tincopasan

hola:
hay muchas formas de resolver esto, te muestro una.

Código (python) [Seleccionar]
#-*- coding: utf -8 -*-
poema           =  "El unicornio blanco se ve negro a la distancia por que la noche es oscura. Mientras tanto,el caballo blanco del comisario come pasto cansinamente al lado del gallinero lleno de patos."

class Contador:
   
    def __init__(self,poema,sep1,sep2):
        self.poema = poema
        self.sep_frases = sep1
        self.sep_palabras = sep2
     
    def cuenta(self):
        self.lista_frases= [x for x in self.poema.split(self.sep_frases) if x !=""]
        self.lista_palabras = [x for x in self.poema.replace(',',' ').replace('.',' ').split(self.sep_palabras) if x !=""]
        self.cant_letras = [x for j in self.lista_palabras for x in j ]
        return self.poema, self.lista_frases,self.lista_palabras,self.cant_letras
   
   
if __name__=='__main__':
    clase = Contador(poema,'.',' ')
    poe,fra,pal,let = clase.cuenta()
    print(poe)
    print("La cantidad de frases es:  ", len(fra))
    print("La cantidad de palabras es: ", len(pal))
    print(f"Este poema tiene {len(let)} letras")


si te fijas cuando trabajo con split() parseo la lista sin las listas vacias que genera sino da más de largo de lo que realmente es y también reemplazo los "." y "," para una mejor lectura de las letras.

hay otras formas pero está me pareció la más simple.

Panic0

Cita de: tincopasan en  9 Enero 2021, 15:43 PM
hola:
hay muchas formas de resolver esto, te muestro una.

Código (python) [Seleccionar]
#-*- coding: utf -8 -*-
poema           =  "El unicornio blanco se ve negro a la distancia por que la noche es oscura. Mientras tanto,el caballo blanco del comisario come pasto cansinamente al lado del gallinero lleno de patos."

class Contador:
   
    def __init__(self,poema,sep1,sep2):
        self.poema = poema
        self.sep_frases = sep1
        self.sep_palabras = sep2
     
    def cuenta(self):
        self.lista_frases= [x for x in self.poema.split(self.sep_frases) if x !=""]
        self.lista_palabras = [x for x in self.poema.replace(',',' ').replace('.',' ').split(self.sep_palabras) if x !=""]
        self.cant_letras = [x for j in self.lista_palabras for x in j ]
        return self.poema, self.lista_frases,self.lista_palabras,self.cant_letras
   
   
if __name__=='__main__':
    clase = Contador(poema,'.',' ')
    poe,fra,pal,let = clase.cuenta()
    print(poe)
    print("La cantidad de frases es:  ", len(fra))
    print("La cantidad de palabras es: ", len(pal))
    print(f"Este poema tiene {len(let)} letras")


si te fijas cuando trabajo con split() parseo la lista sin las listas vacias que genera sino da más de largo de lo que realmente es y también reemplazo los "." y "," para una mejor lectura de las letras.

hay otras formas pero está me pareció la más simple.
Hola,muchas gracias por esa ayuda...La verdad a lo que recién comienzo cualquiera costa me parece compleja jajaj
Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.