Eu fiquei meio bitolado na história do objects que perdi a noção do resto do código haha. Vc tem razão em não entender esses pass
, pq essa sintaxe está errada mesmo. O pass indica que o Python realmente não deve fazer nada quando determinada condição se apresenta. No nosso caso aqui, não temos necessidade de utilizar o pass
em nenhum dos métodos.
De acordo com o enunciado, o código faria sentido pra mim da seguinte forma:
class analysedText(object):
def __init__(self, text: str):
# Atribui o texto a um objeto dentro da classe, converte string para
# caixa-baixa e depois remove toda a pontuaçao, como pede o exercício.
self.fmtText = (
text.lower()
.replace(".", "")
.replace("!", "")
.replace(",", "")
.replace("?", "")
)
# Daria pra fazer de um jeito mais prático e eficiente também, utilizando
# o `translate`, também método da classe `str`. Estamos dizendo que todas
# as pontuações encontradas no texto devem ser traduzidas para "" basicamente.
# O pacote `string`, natural do Python, compila pra gente todas as pontuações em
# `string.punctuation`.
#
# >> self.fmtText = text.lower().translate(str.maketrans("", "", string.punctuation))
def freqAll(self):
# Separamos todas as palavras do nosso objeto principal
stext = self.fmtText.split()
# Inicializamos um dicionário com as keys sendo as palavras únicas
# encontradas no texto e todos os valores sendo 0. A funçao `set`
# vai tratar de achar tudo o que é único na nossa lista de palavras criando
# um objeto do tipo `set`.
freq = dict.fromkeys(set(stext), 0)
# Iteramos a lista de palavras e a cada iteraçao contamos 1 à key
# correspondente à palavra no dicionário
for k in stext:
freq[k] += 1
return freq
def freqAll2(self):
# Esse seria um aproach mais didático: splitaríamos o texto, criaríamos
# um dicionário vazio e depois, a cada iteração de palavras, perguntaríamos
# ao dicionário se a key da palavra já existe. Caso exista, somamos um.
# Caso não, criamos ela com o valor de 1 contagem e pedimos ao Python para
# que passe para próxima iteração com o `continue`, já que a contagem já foi feita.
stext = self.fmtText.split()
freq = {}
for k in stext:
if k not in freq.keys():
freq[k] = 1
continue
freq[k] += 1
return freq
def freqOf(self, word):
# `count` é um método da classe `str` e vai identificar dentro da string
# quantas vezes determinada palavra apareceu, o que facilita muito a vida
return self.fmtText.count(word)
Qualquer dúvida estou à disposição!