1
resposta

[Projeto] desafio

# Desafio 1: Estatísticas de Lista
lista = [16, 14, 63, 65, 17, 99, 70, 11, 20, 48, 79, 32, 17, 89, 12, 25, 66]
tam = len(lista)
maior = max(lista)
menor = min(lista)
soma = sum(lista)
print(f"A lista possui {tam} números. Maior: {maior}, Menor: {menor}. Soma: {soma}")

# Desafio 4: Quadrados com Lambda e Map
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
quadrados = list(map(lambda x: x**2, numeros))
print(f"Quadrados: {quadrados}")

# Desafio 7: Nomes Completos
nomes = ["joão", "MaRia", "JOSÉ"]
sobrenomes = ["SILVA", "souza", "Tavares"]
# Usamos title() para padronizar: Primeira letra maiúscula, restante minúscula
completos = list(map(lambda n, s: f"{n.title()} {s.title()}", nomes, sobrenomes))
print(f"Nomes tratados: {completos}")

# Desafio 10: Filtro de Palavras (NLP)
frase = "Aprender Python aqui na Alura é muito bom"
# Limpeza de pontuação e separação
palavras = frase.replace(',',' ').replace('.',' ').split()
# Filtro: apenas palavras com 5 ou mais letras
longas = list(filter(lambda p: len(p) >= 5, palavras))
print(f"Palavras com 5+ letras: {longas}")

# Desafio 5: Pontuação de Skate (Média aparada)
def calcular_skate(notas):
    notas.remove(max(notas))
    notas.remove(min(notas))
    return sum(notas) / len(notas)

notas_skate = [8.5, 9.0, 7.5, 9.5, 8.0]
media_final = calcular_skate(notas_skate)
print(f"Nota da manobra: {media_final:.2f}")

# Desafio 8: Pontuação de Futebol
def calcula_pontos(marcados, sofridos):
    pontos = 0
    for m, s in zip(marcados, sofridos):
        if m > s: pontos += 3
        elif m == s: pontos += 1
    aproveitamento = (pontos / (len(marcados) * 3)) * 100
    return pontos, aproveitamento

gols_m = [2, 1, 3, 1, 0]
gols_s = [1, 2, 2, 1, 3]
pts, apr = calcula_pontos(gols_m, gols_s)
print(f"Pontos: {pts} | Aproveitamento: {apr:.1f}%")
1 resposta

Olá, Moacir! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de funções como max, min e sum para obter estatísticas de listas, utilizou muito bem lambda junto com map e filter para transformar e selecionar dados e ainda compreendeu a importância de aplicar lógica condicional em funções personalizadas para calcular médias e pontuações.

Uma dica interessante para o futuro é usar statistics.mean() para calcular médias de forma mais direta. Assim:

import statistics

notas_skate = [8.5, 9.0, 7.5, 9.5, 8.0]
media_final = statistics.mean(notas_skate[1:-1])  # removendo maior e menor manualmente
print(f"Nota da manobra: {media_final:.2f}")

Isso faz com que o cálculo fique mais legível e aproveite recursos nativos da linguagem.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!