No código, na função media de avaliações, o professor digitou essa linha de código: soma_das_notas = sum(avaliacao._nota for avaliacao in self._avaliacao)
poderia fazer uma explicação mais detalhada sobre essa especifica linha?
Agradeço!
No código, na função media de avaliações, o professor digitou essa linha de código: soma_das_notas = sum(avaliacao._nota for avaliacao in self._avaliacao)
poderia fazer uma explicação mais detalhada sobre essa especifica linha?
Agradeço!
Oi Caroline, eu não fiz essa aula, mas vou assumir algumas coisas pela sintaxe do que vc postou. Vc tem um objeto que contem uma lista de avaliações e cada uma dessas avaliações é um objeto que tem uma nota numérica.
Então vamos em partes: sum(valores): a função sum simplesmente soma todos os valores numericos existentes na sequência passada.
# Entao se vc passar uma sequencia de 1 a 5, vc tera resultado 15
print(sum([1,2,3,4,5])) # 15
print(sum(range(1, 6))) # 15
avaliacao._nota for avaliacao in self._avaliacao: aqui vc está fazendo um loop na lista self._avaliacao, olhando para cada um dos itens contidos na lista e usando a variável avaliacao para representar o item observado, e para cada avaliacao vc pega o valor do atributo nota. Então nessa parte do código vc está gerando uma sequência de notas.
print([i for i in range(1, 6)]) # [1, 2, 3, 4, 5]
# teste com seu objeto tambem
print([avaliacao._nota for avaliacao in self._avaliacao])
Então como vc gerou uma sequência de valores na parte interna do código e o método sum está esperando exatamente isso, vc tem como resultado a somatória das notas de todas as avaliações.
Olha, eu nao sou professor, mas vou falar uma duvida que buguei por 5 minutos e depois entendi(eu acho)
soma_das_notas = sum(avaliacao._nota for avaliacao in self._avaliacao)
A soma funciona do seguinte, o avaliacao._nota veio do receber_avaliacao(). Lembra que estava adicionando ao class Avaliacao? Entao pra cada vez que existir a 'avaliacao(novamente, aquele mesmo do recever_avaliacao()), dentro do for, ele vai somar o valor um por um.
Certo?