Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Função Avaliador não retorna o %

Na aula 04 - Avaliando a qualidade do corretor, minha função 'avaliador' não está retornando o % de acerto. Estou usando o Jupyter:

def cria_dados_teste(nome_arquivo):
    lista_palavras_teste = []
    f = open(nome_arquivo, "r")
    for linha in f:
        correta, errada = linha.split()
        lista_palavras_teste.append((correta, errada))
    f.close()
    return lista_palavras_teste

lista_teste = cria_dados_teste("palavras.txt")
lista_teste

Saída conforme a aula:

 [('podemos', 'pyodemos'),
 ('esse', 'esje'),
 ('já', 'jrá'),
 ('nosso', 'nossov'),
 ('são', 'sãêo'),
 ('dos', 'dosa'),
 ('muito', 'muifo')
... 
]

Segunda função:

def avaliador(testes):
    numero_palavras = len(testes)
    acertou = 0
    for correta, errada in testes:
        palavra_corrigida = corretor(errada)
        if palavra_corrigida == correta:
            print(correta)
            acertou += 1
    taxa_acerto = round(acertou * 100/numero_palavras,2)
    print({taxa_acerto})

avaliador(lista_teste)

Saída:

[('', 'pyodemos'), ('p', 'yodemos'), ('py', 'odemos'), ('pyo', 'demos'), ('pyod', 'emos'), ('pyode', 'mos'), ('pyodem', 'os'), ('pyodemo', 's'), ('pyodemos', '')]
[('', 'esje'), ('e', 'sje'), ('es', 'je'), ('esj', 'e'), ('esje', '')]
[('', 'jrá'), ('j', 'rá'), ('jr', 'á'), ('jrá', '')]
[('', 'nossov'), ('n', 'ossov'), ('no', 'ssov'), ('nos', 'sov'), ('noss', 'ov'), ('nosso', 'v'), ('nossov', '')]
[('', 'sãêo'), ('s', 'ãêo'), ('sã', 'êo'), ('sãê', 'o'), ('sãêo', '')]
[('', 'dosa'), ('d', 'osa'), ('do', 'sa'), ('dos', 'a'), ('dosa', '')]
[('', 'muifo'), ('m', 'uifo'), ('mu', 'ifo'), ('mui', 'fo'), ('muif', 'o'), ('muifo', '')]
[('', 'iômagem'), ('i', 'ômagem'), ('iô', 'magem'), ('iôm', 'agem'), ('iôma', 'gem'), ('iômag', 'em'), ('iômage', 'm'), ('iômagem', '')]
[('', 'ósua'), ('ó', 'sua'), ('ós', 'ua'), ('ósu', 'a'), ('ósua', '')]
[('', 'tambéùm'), ('t', 'ambéùm'), ('ta', 'mbéùm'), ('tam', 'béùm'), ('tamb', 'éùm'), ('també', 'ùm'), ('tambéù', 'm'), ('tambéùm', '')]

Obrigada!

1 resposta
solução!

Olá Daiane, tudo bem?

Acho que ele está fazendo o print, mas o print(correta) da função deve estar poluindo muito a saída e vc não está conseguindo ver. O seu print({taxa_acerto}), não precisa desta chave, usamos apenas a chaves quando queremos fazer interpolação de string, no caso deste curso usamos o chamado f-string. Caso queria plotar apenas o número sem um "texto" pode usar print(taxa_acerto).

Faz as seguinte modificações e verifica se da certo!

def avaliador(testes):
    numero_palavras = len(testes)
    acertou = 0
    for correta, errada in testes:
        palavra_corrigida = corretor(errada)
        if palavra_corrigida == correta:
            acertou += 1
    taxa_acerto = round(acertou * 100/numero_palavras,2)
    print(f"A taxa de acerto é {taxa_acerto}%")

avaliador(lista_teste)