Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Desafio

# 1. Informações da 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("1)")
print(f"A lista possui {tam} números em que o maior número é {maior} e o menor número é {menor}.")
print(f"A soma dos valores presentes nela é igual a {soma}")
print("-" * 50)

# 2. Função da tabuada

def tabuada(numero):
    print(f"Tabuada do {numero}:")
    
    for i in range(11):
        print(f"{numero} x {i} = {numero * i}")

print("2)")
tabuada(7)
print("-" * 50)

# 3. Função que retorna múltiplos de 3

def multiplos_de_3(lista):
    return [numero for numero in lista if numero % 3 == 0]

numeros = [97, 80, 94, 88, 80, 1, 16, 53, 62, 32, 24, 99]

mult_3 = multiplos_de_3(numeros)

print("3)")
print(mult_3)
print("-" * 50)

# 4. Quadrados usando lambda e map

numeros = [1,2,3,4,5,6,7,8,9,10]

quadrados = list(map(lambda x: x**2, numeros))

print("4)")
print(quadrados)
print("-" * 50)

# 5. Média eliminando maior e menor nota

print("5)")

notas = []

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

notas.remove(max(notas))
notas.remove(min(notas))

media = sum(notas) / len(notas)

print(f"Nota da manobra: {media:.2f}")
print("-" * 50)

# 6. Função de análise de notas

def analisa_notas(lista_notas):
    maior = max(lista_notas)
    menor = min(lista_notas)
    media = sum(lista_notas) / len(lista_notas)

    situacao = "Aprovado(a)" if media >= 7 else "Reprovado(a)"

    return maior, menor, media, situacao

print("6)")

notas_estudante = [7.5, 8.0, 6.5, 9.0]

maior, menor, media, situacao = analisa_notas(notas_estudante)

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}")
print("-" * 50)

# 7. Concatenar nomes e sobrenomes

print("7)")

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

nomes_completos = list(map(
    lambda nome, sobrenome: f"{nome.title()} {sobrenome.title()}",
    nomes,
    sobrenomes
))

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

print("-" * 50)

# 8. Cálculo da pontuação do time

def calcula_pontos(gols_marcados, gols_sofridos):
    pontos = 0

    for marcados, sofridos in zip(gols_marcados, gols_sofridos):

        if marcados > sofridos:
            pontos += 3

        elif marcados == sofridos:
            pontos += 1

    max_pontos = len(gols_marcados) * 3

    aproveitamento = (pontos / max_pontos) * 100

    return pontos, aproveitamento

print("8)")

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

pontos, aproveitamento = calcula_pontos(gols_marcados, gols_sofridos)

print(f"A pontuação do time foi de {pontos} e seu aproveitamento foi de {aproveitamento:.1f}%")
print("-" * 50)

# 9. Gastos de viagem

def gasto_hotel(dias):
    return dias * 150

def gasto_gasolina(distancia):
    litros = (distancia * 2) / 14
    return litros * 5

def gasto_passeio(dias, valor_passeio):
    return dias * valor_passeio

print("9)")

cidade = "Salvador"
dias = 3
distancia = 850
valor_passeio = 200

total = (
    gasto_hotel(dias) +
    gasto_gasolina(distancia) +
    gasto_passeio(dias, valor_passeio)
)

print(f"Com base nos gastos definidos, uma viagem de {dias} dias para {cidade} saindo de Recife custaria R$ {total:.2f}")
print("-" * 50)

# 10. Filtrar palavras com 5 ou mais letras

print("10)")

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

frase = (
    frase.replace(",", " ")
          .replace(".", " ")
          .replace("!", " ")
          .replace("?", " ")
)

palavras = frase.split()

resultado = list(filter(lambda palavra: len(palavra) >= 5, palavras))

print(resultado)
1 resposta

Oii, Micael.

Parabéns pelo excelente desempenho no desafio.

Você demonstrou um domínio amplo das principais ferramentas de manipulação de dados do Python, resolvendo dez exercícios complexos com uma escrita de código organizada e direta.

Destaco alguns pontos altos do seu desenvolvimento:

  • Domínio de paradigmas funcionais: O uso combinado de map(), filter() e expressões lambda nos exercícios 4, 7 e 10 mostra que você já absorveu técnicas avançadas para transformar coleções sem precisar desenhar laços manuais complexos.
  • Uso Inteligente de list Comprehensions: No exercício 3, ao filtrar os múltiplos de 3, sua estrutura ficou extremamente legível e nativa ao estilo Python (pythonic).
  • Paralelismo com zip: No exercício 8, usar a função zip() para comparar os gols marcados e sofridos na mesma rodada foi a estratégia ideal para cruzar as informações das duas listas.

Na sua visão, utilizar as funções de ordem superior como map() e filter() deixou a leitura dessas transformações de dados mais limpa do que se você tivesse usado laços for tradicionais com append?

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