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!

0
respostas

[Projeto] Desafio: hora da prática | Python para Dados: trabalhando com funções, estruturas de dados e exceções

Aquecimento

  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(f"A lista possui {tam} números em que o maior número é {maior} e o menor número é {menor}. A soma dos valores presentes nela é igual a {soma}")
  1. Função para gerar tabuada
def tabuada(numero):
    print(f"Tabuada do {numero}:")

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

num = int(input("Digite um número: "))
tabuada(num)
  1. Múltiplos de 3
def multiplos_de_tres(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_tres(numeros)

print(mult_3)

Saída:
[24, 99]
  1. Quadrado dos números usando lambda e map
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

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

print(quadrados)
  1. Média da manobra de skate
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}")

Aplicando a projetos

  1. Análise de notas do estudante
def analisar_notas(notas):
    maior = max(notas)
    menor = min(notas)
    media = sum(notas) / len(notas)

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

    return maior, menor, media, situacao

notas = [8, 7, 9, 6]

maior, menor, media, situacao = analisar_notas(notas)

print(
    f"O(a) estudante obteve uma média de {media:.2f}, "
    f"com a sua maior nota de {maior} pontos e a menor nota de {menor} "
    f"pontos e foi {situacao}"
)
  1. Nome completo usando map
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}")

Saída:

Nome completo: João Silva
Nome completo: Maria Souza
Nome completo: José Tavares
  1. 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

    aproveitamento = (pontos / (len(gols_marcados) * 3)) * 100

    return pontos, aproveitamento

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:.2f}%"
)

Resultado:

A pontuação do time foi de 7 e seu aproveitamento foi de 46.67%
  1. Gastos de viagem
def gasto_hotel(dias):
    return dias * 150

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

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

dias = 3
cidade = "Salvador"

distancia_salvador = 850
custo_passeio_salvador = 200

gastos = (
    gasto_hotel(dias)
    + gasto_gasolina(distancia_salvador * 2)
    + gasto_passeio(dias, custo_passeio_salvador)
)

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

Resultado aproximado:

Com base nos gastos definidos, uma viagem de 3 dias para Salvador saindo de Recife custaria R$1657.14
  1. Filtrar palavras com 5 ou mais caracteres
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)

Saída:

['Aprender', 'Python', 'Alura', 'muito']