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. ;)
hola:
hay muchas formas de resolver esto, te muestro una.
#-*- 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.
Cita de: tincopasan en 9 Enero 2021, 15:43 PM
hola:
hay muchas formas de resolver esto, te muestro una.
#-*- 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