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

Dúvidas à respeito do funcionamento do código

Olá.

Sou iniciante nas linguagens de programação e estou seguindo a formação Python para Data Science. Fiquei com algumas dúvidas à respeito da lógica de funcionamento de algumas partes do código até aqui. Agradeço se puderem me auxiliar no entendimento:

  • Nas aulas anteriores, foi definida a função probabilidade, que recebe a entrada (palavra_gerada). Posteriormente, esta função é utilizada junto ao parâmetro 'key' dentro da função corretor. Não entendi exatamente como o parâmetro 'key' vai acessar a (palavra_gerada), no caso, nossa (palavra_exemplo). O instrutor cria alguns exemplos de palavras para testar a probabilidade de retorno das mesmas. Ou seja, a variável deve ser definida antes ou ela está sendo regatada de algum lugar que não estou conseguindo enxergar?

  • Fique em dúvida, também, no laço for dentro da função cria_dados_teste: como o laço entende que deve percorrer o arquivo linha por linha? Até então, entendia que se percorria elemento por elemento. Seria o tipo de formatação do texto que permite essa execução?

Muito obrigado!

2 respostas
solução!

Oi Fabiano! Tudo bem contigo?

Vou começar pela primeira pergunta apresentada. Para te ajudar nela vai ser preciso explicar melhor como funciona a função max() do python. Essa função pode receber três parâmetros: iterable, default e key.

  • iterable - recebe um valor iterável, ou seja, uma lista ou tupla. Os elementos nesse parâmetro vão ser comparados e verificado qual deles é o maior.
  • default - recebe um valor padrão a ser retornado caso o iterable esteja vazio.
  • key - recebe uma função de parâmetro único. Esse parâmetro faz com que os elementos de iterable sejam levados um a um para a função que foi definida como parâmetro dela.

Um exemplo desse caso é uma função que retorna o valor inverso da entrada e precisamos ver qual o maior valor entre 1 e 5 que sai dessa função. Para isso foi criada a função funcao e colocamos o valor de iterable uma lista de 1 a 5 e a key a função.

def funcao(entrada):
    return 1/entrada
print(max([1,2,3,4,5],key=funcao))

#Resultado:
1

A saída nesse print é o valor 1, afinal 1/1 resulta na maior saída da função dentre os elementos dados. Então, o que aconteceu na função max() do exemplo acima é o mesmo que aconteceu na função corretor, ou seja, todos os valores da lista palavras_geradas foram passados, calculados e comparados na função probabilidade.

Quanto à segunda pergunta, essa leitura se dá pela característica do elemento f e pela estrutura for elemento in iteravel:. O f é um elemento iterável (como uma lista, por exemplo) que contém as linhas do texto separadas por elemento. Já a estrutura for elemento in iteravel: vai fazer o elemento percorrer cada conjunto de f por vez. Se temos uma variável f que contém um conjunto de strings, ao executar aquela estrutura de for, o elemento irá verificar cada string por vez conforme o seguinte exemplo:

lista = ['correta_1 errada_1',
         'correta_2 errada_2',
         'correta_3 errada_3']
for elemento in lista:
    print(elemento)

# resultado:
correta_1 errada_1
correta_2 errada_2
correta_3 errada_3

As linhas do arquivo f funcionam como essa lista de strings que possui valores que podem ser iterados no for.

Eu espero ter te ajudado! Se a dúvida persistir, estarei à disposição.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

Olá, Mirla.

Grato pela ajuda. Entendi, sim =)

Até mais.