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

Desafio: hora da prática (Aplicando a projetos)

# Questão 5: Calcule a pontuação de um(a) skatista

# lista para armazenar as notas
notas = []

# leitura das 5 notas
for i in range(5):
    nota = float(input(f"Digite a {i + 1}ª nota: "))
    notas.append(nota)

# remoção da maior e menor nota
notas.remove(max(notas))
notas.remove(min(notas))

# cálculo da média das notas restantes
media = sum(notas) / len(notas)

# mensagem final
print(f"Nota da manobra: {media:.2f}")
# Questão 6: Crie uma função que analise o desempenho de um(a) estudante

# função para analisar as notas
def desempenho(notas):

    # maior e menor nota
    maior = max(notas)
    menor = min(notas)

    # cálculo da média
    media = sum(notas) / len(notas)

    # verificação da situação
    if media >= 7:
        situacao = "Aprovado(a)"
    else:
        situacao = "Reprovado(a)"

    # retorno dos resultados
    return maior, menor, media, situacao

# lista com as 4 notas
notas = [8.0, 7.5, 6.0, 9.0]

# chamada da função
maior, menor, media, situacao = desempenho(notas)

# mensagem final
print(f"O(a) estudante obteve uma média de {media:.1f}, com a sua maior nota de {maior} pontos e a menor nota de {menor} pontos e foi {situacao}")
# Questão 7: Concatene os nomes e sobrenomes dos(as) estudantes

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

# função para formatar o nome completo
nome_completo = list(map(
    lambda nome, sobrenome: f"{nome.title()} {sobrenome.title()}",
    nomes,
    sobrenomes
))

# exibindo os nomes completos
for nome in nome_completo:
    print(f"Nome completo: {nome}")
# Questão 8: Calcule a pontuação e o aproveitamento de um time

gols_marcados = [2, 1, 3, 1, 0]
gols_sofridos = [1, 2, 2, 1, 3]

# função para calcular os pontos e o aproveitamento
def calcula_pontos(marcados, sofridos):

    pontos = 0

    # verificação do resultado de cada partida
    for i in range(len(marcados)):

        if marcados[i] > sofridos[i]:
            pontos += 3

        elif marcados[i] == sofridos[i]:
            pontos += 1

    # cálculo do aproveitamento
    pontuacao_maxima = len(marcados) * 3
    aproveitamento = (pontos / pontuacao_maxima) * 100

    # retorno dos resultados
    return pontos, aproveitamento

# chamada da função
pontos, aprov = calcula_pontos(gols_marcados, gols_sofridos)

# mensagem final
print(f"A pontuação do time foi de {pontos} e seu aproveitamento foi de {aprov:.1f}%")
# Questão 9: Calcule os gastos de uma viagem

# função para calcular os gastos com hotel
def gasto_hotel(dias):

    return dias * 150

# função para calcular os gastos com gasolina
def gasto_gasolina(distancia):

    consumo = 14
    valor_gasolina = 5

    litros_gastos = distancia / consumo

    return litros_gastos * valor_gasolina

# função para calcular os gastos com passeio e alimentação
def gasto_passeio(dias, valor_passeio):

    return dias * valor_passeio

# dados da viagem
cidade = "Salvador"
dias = 3
distancia = 850 * 2
valor_passeio = 200

# cálculo dos gastos
hotel = gasto_hotel(dias)
gasolina = gasto_gasolina(distancia)
passeio = gasto_passeio(dias, valor_passeio)

# gasto total
gastos = hotel + gasolina + passeio

# mensagem final
print(f"Com base nos gastos definidos, uma viagem de {dias} dias para {cidade} saindo de Recife custaria {gastos:.2f} reais")
# Questão 10: Filtre palavras com 5 ou mais caracteres

frase = "Aprender Python aqui na Alura é muito bom"

# tratamento da frase
frase = frase.replace(",", " ")
frase = frase.replace(".", " ")
frase = frase.replace("!", " ")
frase = frase.replace("?", " ")

# separação das palavras
palavras = frase.split()

# filtro das palavras com 5 ou mais caracteres
palavras_filtradas = list(filter(lambda palavra: len(palavra) >= 5, palavras))

# exibindo a lista final
print(palavras_filtradas)
2 respostas
solução!

Olá, Estudante. Como vai?

É impressionante ver como você avançou na aplicação prática dos conceitos! Resolver problemas que simulam situações reais — como o cálculo de pontuação de skatistas ou a organização de gastos de uma viagem — é a melhor forma de fixar o aprendizado de funções e estruturas de dados.

Gostaria de comentar alguns pontos técnicos de destaque nas suas resoluções:

1. Manipulação de Listas (Questão 5)
Sua estratégia de usar max() e min() seguida de .remove() é muito inteligente para competições esportivas. Na prática, isso garante que valores extremos (outliers) não distorçam a média final. Apenas como curiosidade, em listas muito grandes, remover pelo valor pode ser levemente mais lento que remover pelo índice, mas para 5 notas, sua solução é perfeita e muito legível.

2. Formatação de Strings com map (Questão 7)
Você utilizou o método .title() dentro de uma função lambda. Essa é uma escolha excelente, pois o .title() cuida automaticamente de colocar a primeira letra em maiúscula e o restante em minúscula, corrigindo nomes que chegam "bagunçados" (como "MaRia" ou "SILVA").

3. Lógica de Pontuação (Questão 8)
Sua função calcula_pontos está muito bem estruturada. Você aplicou corretamente a lógica de acumular pontos (3 para vitória, 1 para empate). Um detalhe importante foi o cálculo do aproveitamento: ao multiplicar a quantidade de jogos por 3, você definiu a base correta para o cálculo percentual.

4. Modularização (Questão 9)
Este exercício é um exemplo perfeito de responsabilidade única. Cada função cuida de um gasto específico (gasto_hotel, gasto_gasolina). Isso facilita muito a manutenção do código: se o preço da gasolina mudar, você só precisa alterar uma linha dentro de uma função, sem risco de quebrar o cálculo do hotel.

5. Tratamento de Texto e Filtros (Questão 10)
O uso do .split() para transformar a frase em uma lista e depois o filter() com lambda demonstra uma maturidade grande em Python.

Dica extra: Para o tratamento da frase na Questão 10, se você tiver muitas pontuações diferentes, pode usar um laço for para simplificar os múltiplos .replace():

for pontuacao in ",.!?":
    frase = frase.replace(pontuacao, " ")

Seu código está limpo, bem organizado e utiliza nomes de variáveis muito intuitivos. Continue praticando esses desafios de aquecimento, eles são a base para projetos de Data Science mais complexos!

Espero que possa ter lhe ajudado!

Obrigado pelas dicas!