There are actually two things that are missing you,
The return causes the function to return (stop the execution) just after this line, and there is a detail that is missing you, the commas of the words, which causes the check to not return true, eg 'nos' == 'nos,' = False
.
Your corrected code:
from collections import Counter
def popularidade (texto, palavras):
texto = texto.lower().split()
palavras = palavras.lower().replace(',', '').split() # tirar virgulas
lista = []
for p in palavras:
for t in texto:
if p == t:
lista.append(t)
return Counter(lista) # return quando todas as palavras verificadas
print(popularidade("Ao nos resolver a esta tarefa, preste nos atenção nos seguintes a nos pontos:", "nos a preste"))
STATEMENT
To tell the truth you do not even need 'to happen', nor to Counter()
:
palavras = "nos, a, preste"
texto = "Ao nos resolver a esta tarefa, preste nos atenção nos seguintes a nos pontos:"
palavras_spl = palavras.lower().replace(',', '').split()
text_spl = texto.lower().split()
count = {p: text_spl.count(p) for p in palavras_spl if p in text_spl}
print(count) # {'preste': 1, 'a': 2, 'nos': 4}
DEMONSTRATION
Sequiseres completely remove the score of both, to ensure that both are only with words:
import string
palavras = "nos, a, preste"
texto = "Ao nos resolver a esta tarefa, preste nos atenção nos seguintes a nos pontos:"
palavras_spl = palavras.translate(palavras.maketrans('','',string.punctuation)).lower().split()
text_spl = texto.translate(texto.maketrans('','',string.punctuation)).lower().split()
count = {p: text_spl.count(p) for p in palavras_spl if p in text_spl}
print(count) # {'preste': 1, 'a': 2, 'nos': 4}
DEMONSTRATION