Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Retorno do else

Eu não entendi porque no else se retorna um número. Ou seja, por que o seguinte código está sendo sendo acrescentado um número e não a palavra que não está no corretor.

   else:
      desconhecida += (correta not in vocabulario)

Seria porque no início do avaliador setamos desconhecida como 0 e não como uma lista?

3 respostas
solução!

Talvez eu tenha encontrado a resposta, mas mesmo assim vou continuar com o tópico aberto, para alguém confirmá-la ou dar uma explicação melhor kkk

O not in retorna um bool, ou seja, um verdadeiro ou falso, um 0 ou 1. Então o += vai fazer a soma sempre, quando for verdadeiro, ele está somando 1.

Se eu quiser ver as palavras que faltam, este deveria ser o código:

def avaliador(testes, vocabulario):
  numero_palavras = len(testes)
  acertou = 0
  desconhecida = 0
  palavra_desconhecida = []
  for correta, errada in testes:
    palavra_corrigida = corretor(errada)
    if palavra_corrigida == correta:
      acertou += 1
    else:
      desconhecida += (correta not in vocabulario)
      palavra_desconhecida.append(correta)    
  taxa_acerto = round(acertou*100/numero_palavras, 2)
  taxa_desconhecida = round(desconhecida*100/numero_palavras, 2)
  print(f'Taxa de acerto de {taxa_acerto}% em {numero_palavras} palavras. A taxa de palavras desconhecidas é de {taxa_desconhecida}%.')
  print(f'Palavras desconhecidas: {palavra_desconhecida}')

vocabulario = set(lista_normalizada)
avaliador(lista_teste, vocabulario)

Eu tive esse resultado:

Taxa de acerto de 76.88% em 186 palavras. A taxa de palavras desconhecidas é de 6.99%.

Palavras desconhecidas: ['ele', 'nos', 'ter', 'bem', 'será', 'eu', 'já', 'das', 'nossa', 'eu', 'ela', 'utilizar', 'projeto', 'site', 'sem', 'pelo', 'alura', 'dia', 'tudo', 'ela', 'utilizar', 'projeto', 'site', 'sem', 'pelo', 'alura', 'dia', 'tudo', 'empoderamento', 'cavalo', 'canela', 'tênis', 'ansiosa', 'ansiosa', 'ansiosa', 'empoderamento', 'asterisco', 'entretido', 'idiota', 'tomara', 'prevalecer', 'mendigo', 'perturbar']

Fala Rafa, tudo bem?

É isso mesmo, vc está certinho! O not é um operador lógico e o retorno será do tipo bool, que ao se realizar uma operação matemática são convertidos para o tipo int (1 para True e 0 para False) por isso podemos somar, neste caso!

Abraços!

Opa, tudo bem Thiago! Muito obrigado pela resposta!!

Abraços!