Bom dia!




Bom dia!




Olá, Estudante. Como vai?
Parabéns pelo excelente trabalho no desenvolvimento dos desafios da Seção 02! Seus códigos estão muito organizados, bem documentados com docstrings explicativas e fazendo uso de recursos avançados do Python como zip(), map(), filter() e expressões lambda.
Analisando a sua resolução de ponta a ponta, a lógica de todas as questões está correta e os resultados batem perfeitamente. Contudo, na Questão 5 (cálculo da nota de manobra do atleta de skate), existe um detalhe escondido na lógica do Método 1 que pode gerar bugs caso as notas inseridas se repitam. Vamos analisar esse ponto para enriquecer ainda mais o seu aprendizado.
No seu Método 1, você utilizou a seguinte condição para filtrar as notas dentro do laço for:
if j != max(notas) and j != min(notas):
Essa lógica funciona perfeitamente quando todas as notas são diferentes, como no exemplo que você testou [10, 6, 4, 8, 7]. Mas pense no seguinte cenário real de uma competição de skate: o atleta recebe as notas [8, 8, 7, 6, 5].
max(notas) é 8.8, a condição vai ver que 8 != 8 é Falso. Ele não adiciona o número na soma.8, a condição se repete e ele também é descartado.Nesse caso, o programa descartaria o valor máximo duas vezes, em vez de eliminar apenas uma única nota mais alta.
O seu Método 2 resolveu esse problema de forma brilhante sem você perceber!
notas.remove(max(notas))
notas.remove(min(notas))
O método .remove() do Python remove apenas a primeira ocorrência do valor encontrado na lista. Se a lista for [8, 8, 7, 6, 5], ele vai apagar o primeiro 8, mas manterá o segundo na lista. Por isso, o seu Método 2 é o mais robusto e correto para esse tipo de problema.
Na Questão 3, você usou um laço baseado no índice para percorrer a lista:
for i in range(0, len(lista)):
if lista[i] % 3 == 0:
Em Python, quando precisamos apenas avaliar os elementos de uma lista (sem alterar o valor da posição original), a boa prática é percorrer os elementos diretamente, o que deixa o código mais limpo e "pythônico":
for elemento in lista:
if elemento % 3 == 0:
nova_lista.append(elemento)
O uso que você fez das funções integradas e o reaproveitamento de funções na Questão 9 (Plano Orçamentário de Viagem) ficaram dignos de um programador experiente.
Continue com esse foco nos estudos e explorando diferentes métodos para resolver o mesmo problema!
Espero que possa ter lhe ajudado!
Bom dia, Evandro!
Muito obrigado por seu retorno e suas excelentes sugestões, serão muito úteis!