Ao acompanhar a aula, ao escrever a função abaixo, na definição da variável 'candidatos', eu utilizei a função 'list()', como exemplificado:
def novo_corretor(palavra):
palavras_geradas = gerador_palavras(palavra)
palavras_turbinado = gerador_turbinado(palavras_geradas)
todas_palavras = set(palavras_geradas + palavras_turbinado)
candidatos = list(palavra)
for palavra in todas_palavras:
if palavra in vocabulario:
candidatos.append(palavra)
print(len(candidatos))
palavra_correta = max(candidatos, key=probabilidade)
return palavra_correta
porém, dessa maneira, estava obtendo o resultado equivocado tanto para 'len(candidatos)' e para 'return palavra_correta', obtendo como resultado 9 e 'a', respectivamente.
Ao tentar resolver o problema, alterei a única diferença entre meu código e o código do instrutor, no vídeo.
def novo_corretor(palavra):
palavras_geradas = gerador_palavras(palavra)
palavras_turbinado = gerador_turbinado(palavras_geradas)
todas_palavras = set(palavras_geradas + palavras_turbinado)
candidatos = [palavra]
for palavra in todas_palavras:
if palavra in vocabulario:
candidatos.append(palavra)
print(len(candidatos))
palavra_correta = max(candidatos, key=probabilidade)
return palavra_correta
novo_corretor(palavra)
Dessa maneira, a única alteração no código foi a utilização da abertura de chave '[]' no lugar da função 'list()' ao definir a variável 'candidatos'. Com essa mudança obtive o resultado correto tanto para 'len(candidatos)' e 'return palavra_correta', 2 e 'lógica', respectivamente.
Apesar de corrigir o código e obter o resultado esperado, não compreendi como uma mudança em métodos que, até onde meu conhecimento vai, são quase idênticos, alterou tão drasticamente o output do código. Alguém poderia me explicar?