1
resposta

Desafio: hora da prática

  1. Você foi contratado(a) como cientista de dados de uma associação de skate. Para analisar as notas recebidas de skatistas em algumas competições ao longo do ano, você precisa criar um código que calcula a pontuação dos(as) atletas. Para isso, o seu código deve receber 5 notas digitadas pelas pessoas juradas.
    Para calcular a pontuação de um(a) skatista, você precisa eliminar a maior e a menor pontuação dentre as 5 notas e tirar a média das 3 notas que sobraram. Retorne a média para apresentar o texto:

"Nota da manobra: [media]"
RESPOSTA:
#Guardando as notas na lista
notas = [float(input("Digite a primeira nota: ")),
float(input("Digite a segunda nota: ")),
float(input("Digite a terceira nota: ")),
float(input("Digite a quarta nota: ")),
float(input("Digite a quinta nota: "))]
#Achando a nota máxima e a nota mínima
maior = max(notas)
menor = min(notas)

Calculando a média das 3 notas restantes

media = (sum(notas) - maior - menor) / 3
print(f'A nota média da manobra é de {media:.1f}')

2.Para atender a uma demanda de uma instituição de ensino para a análise do desempenho de seus(suas) estudantes, você precisa criar uma função que receba uma lista de 4 notas e retorne:
maior nota menor nota média situação (Aprovado(a) ou Reprovado(a)) Para testar o comportamento da função, os dados podem ser exibidos em um texto:

"O(a) estudante obteve uma média de [media], com a sua maior nota de [maior] pontos e a menor nota de [menor] pontos e foi [situacao]"
RESPOSTA:
#Função
def notas_aluno(lista_notas):
maior = max(lista_notas)
menor = min(lista_notas)
media = sum(lista_notas) / len(lista_notas)
if media >= 6:
situacao = "Aprovado(a)"
else:
situacao = "Reprovado(a)"
return maior, menor, media, situacao

#Coleta das notas
notas_digitadas = [float(input("Digite a primeira nota: ")),
float(input("Digite a segunda nota: ")),
float(input("Digite a terceira nota: ")),
float(input("Digite a quarta nota: "))]

#Chamada da função e atribuição dos valores retornados
maior_nota, menor_nota, media_calculada, situacao_final = notas_aluno(notas_digitadas)

#Saída
print(f'''O(a) estudante obteve uma média de {media_calculada:.1f},
com a sua maior nota de {maior_nota} pontos
e a menor nota de {menor_nota} pontos e foi {situacao_final}''')

  1. Você recebeu uma demanda para tratar 2 listas com os nomes e sobrenomes de cada estudante concatenando-as para apresentar seus nomes completos na forma Nome Sobrenome. As listas são:
    nomes = ["joão", "MaRia", "JOSÉ"]

sobrenomes = ["SILVA", "souza", "Tavares"]

O texto exibido ao fim deve ser parecido com:

"Nome completo: Ana Silva"

Dica: utilize a função map para mapear os nomes e sobrenomes e as funções de string para tratar o texto.
RESPOSTA:
#Listas
nomes = ["joão", "MaRia", "JOSÉ"]
sobrenomes = ["SILVA", "souza", "Tavares"]

#Função para juntar e formatar nome e sobrenome
nomes_completos = list(
map(
lambda nome, sobrenome: f"{nome.title()} {sobrenome.title()}",
nomes,
sobrenomes
)
)
#Exibindo os resultados
for nome in nomes_completos:
print(f"Nome completo: {nome}")

1 resposta

Olá, Weydison. Como vai?

Parabéns pelo excelente desempenho na resolução desta primeira parte dos desafios! Seus códigos estão extremamente limpos, organizados e corretos. Você utilizou com maestria funções embutidas essenciais do Python, como max(), min() e sum(), fundamentais para rotinas de Engenharia e Ciência de Dados.

Gostaria de destacar algumas ótimas estratégias que você utilizou e trazer pequenos complementos para enriquecer ainda mais o seu aprendizado técnico:

1. Excelente Lógica de Subtração (Questão 1)

Na questão das notas de skate, a sua sacada matemática para remover a maior e a menor nota foi excelente: em vez de alterar a lista original removendo elementos, você simplesmente somou tudo com sum(notas) e subtraiu as duas variáveis (maior e menor). Isso é ótimo porque mantém a lista intacta caso você precisasse utilizá-la para outra análise no mesmo script.

2. Domínio de Funções com Múltiplos Retornos (Questão 2)

No exercício de análise estudantil, você construiu perfeitamente a função retornando uma tupla com quatro valores (maior, menor, media, situacao) e fez o desempacotamento (unpacking) correto deles ao chamar a função. A formatação com as três aspas simples (f'''...''') ajudou muito na quebra de linha para exibição do texto final.

3. O Poder do map com funções lambda (Questão 3)

Na questão dos nomes completos, você resolveu um problema clássico de tratamento de dados (data cleaning) de forma muito avançada usando map() e uma função anônima lambda. O uso do método .title() foi a escolha perfeita para corrigir as inconsistências de maiúsculas e minúsculas (transformando "MaRia SILVA" em "Maria Silva").

Para fins de fixação, vale lembrar que a função map() em Python é muito eficiente porque ela aplica uma operação a cada elemento de uma coleção sem a necessidade de escrever um laço for manual para a transformação. Ela percorre as estruturas de forma paralela nos bastidores.

Se quiser deixar a leitura do código do seu map um pouquinho mais limpa, evitando aninhamentos profundos de parênteses, você também pode criar uma função nomeada tradicional com def e passá-la como argumento para o map. Veja este exemplo estrutural:

nomes = ["joão", "MaRia", "JOSÉ"]
sobrenomes = ["SILVA", "souza", "Tavares"]

# Criamos uma função clara de formatação
def formata_nome_completo(nome, sobrenome):
    return f"{nome.title()} {sobrenome.title()}"

# Passamos a função diretamente dentro do map
nomes_completos = list(map(formata_nome_completo, nomes, sobrenomes))

for nome in nomes_completos:
    print(f"Nome completo: {nome}")

Ambas as abordagens são amplamente aceitas no mercado, sendo a sua com lambda perfeita para scripts rápidos e transformações diretas. Você está aplicando os conceitos do curso com muita facilidade e propriedade.

Espero que possa ter lhe ajudado!