Acho que seria melhor se vc pudesse colar aqui a parte do código que te deixou com dúvida, pra que a gente possa te dar uma resposta mais certeira. Pode ser de qualquer jeito mesmo, o que for melhor pra vc
O código faz parte uma lição que utiliza objects. Vou tentar colocar uma prévia aqui:
ou have been recruited by your friend, a linguistics enthusiast, to create a utility tool that can perform analysis on a given piece of text. Complete the class ‘analysedText’ with the following methods -
Constructor - Takes argument ‘text’,makes it lower case and removes all punctuation. Assume only the following punctuation is used - period (.), exclamation mark (!), comma (,) and question mark (?). Store the argument in “fmtText”
freqAll - returns a dictionary of all unique words in the text along with the number of their occurences.
freqOf - returns the frequency of the word passed in argument.
The skeleton code has been given to you. Docstrings can be ignored for the purpose of the exercise. Hint: Some useful functions are replace(), lower(), split(), count()
Essa é a parte que vem logo em seguida pra ser editada; eu já fiz algumas alterações:
class analysedText(object):
def __init__ (self, text):
pass self.lower(text)
fmtText=text
return fmtText
def freqAll(self):
pass stext=self.split(text)
for k in stext:
count(stext)
return k
def freqOf(self,word):
word=text
pass
word.count()
if
Se vc estiver falando sobre o termo object, que aparece herdado dentro da declaração da classe analysedText, a resposta é simples: em Python 2.x, vc ganhava algumas ferramentas adicionais pra customizar a sua classe, enquanto em Python 3.x, não faz diferença alguma declarar class analysedText ou class analysedText(object).
Caso não seja essa a sua dúvida, pode me escrever. Meu contato é leodieggs@gmail.com. Me manda uma mensagem por lá e a gente pode marcar um meet pra que eu possa te ajudar melhor!
Eu to perdido com esse pass do código. Não lembro de ter visto isso nos vídeos do curso, mas vou tentar te contatar. Talvez eu não tenha tempo no fim de semana, mas depois eu abro um meet contigo.
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)
Oi, Leonardo. Muito grato pela ajuda, o código rodou com êxito. Talvez eu te contate por email se bater mais alguma dúvida.
Estou aprendendo Python porque quero utilizar a linguagem em análise de dados, futuramente. Tem alguma dica de como praticar? Fiz um curso ano passado, mas acabei ficando “enferrujado”, sem ter mais usado Python.