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

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

Segue a solução para cada exercício em Python:

1. Soma dos elementos de cada lista

lista_de_listas = [[4, 6, 5, 9], [1, 0, 7, 2], [3, 4, 1, 8]]

for lista in lista_de_listas:
    print(sum(lista))

2. Lista com o terceiro elemento de cada tupla

lista_de_tuplas = [
    ('Pedro', 1.74, 81),
    ('Júlia', 1.65, 67),
    ('Otávio', 1.81, 83)
]

pesos = [tupla[2] for tupla in lista_de_tuplas]

print(pesos)

3. Lista de tuplas com posição e nome

lista = ['Pedro', 'Júlia', 'Otávio', 'Eduardo']

resultado = [(indice, nome) for indice, nome in enumerate(lista)]

print(resultado)

4. Valores dos apartamentos

aluguel = [
    ('Apartamento', 1700),
    ('Apartamento', 1400),
    ('Casa', 2150),
    ('Apartamento', 1900),
    ('Casa', 1100)
]

apartamentos = [valor for tipo, valor in aluguel if tipo == 'Apartamento']

print(apartamentos)

5. Dicionário de meses e despesas

meses = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun',
         'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez']

despesa = [860, 490, 1010, 780, 900, 630,
           590, 770, 620, 560, 840, 360]

gastos = {mes: valor for mes, valor in zip(meses, despesa)}

print(gastos)

6. Filtrar vendas de 2022 maiores que 6000

vendas = [
    ('2023', 4093), ('2021', 4320), ('2021', 5959),
    ('2022', 8883), ('2023', 9859), ('2022', 5141),
    ('2022', 7688), ('2022', 9544), ('2023', 4794),
    ('2021', 7178), ('2022', 3030), ('2021', 7471),
    ('2022', 4226), ('2022', 8190), ('2021', 9680),
    ('2022', 5616)
]

filtro = [valor for ano, valor in vendas if ano == '2022' and valor > 6000]

print(filtro)

7. Classificação da glicemia

glicemia = [129, 82, 60, 97, 101, 65, 62, 167, 87, 53,
            58, 92, 66, 120, 109, 62, 86, 96, 103, 88,
            155, 52, 89, 73]

resultado = [
    (
        'Hipoglicemia' if valor <= 70 else
        'Normal' if valor <= 99 else
        'Alterada' if valor <= 125 else
        'Diabetes',
        valor
    )
    for valor in glicemia
]

print(resultado)

8. Tabela de vendas

id = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
quantidade = [15, 12, 1, 15, 2, 11, 2, 12, 2, 4]
preco = [93.0, 102.0, 18.0, 41.0, 122.0, 14.0, 71.0, 48.0, 14.0, 144.0]

tabela = [('id', 'quantidade', 'preco', 'total')]

tabela += [
    (i, q, p, q * p)
    for i, q, p in zip(id, quantidade, preco)
]

for linha in tabela:
    print(linha)

9. Quantidade de filiais por estado

estados = [
    'SP', 'ES', 'MG', 'MG', 'SP', 'MG', 'ES', 'ES',
    'ES', 'SP', 'SP', 'MG', 'ES', 'SP', 'RJ', 'MG',
    'RJ', 'SP', 'MG', 'SP', 'ES', 'SP', 'MG'
]

contagem = {
    estado: estados.count(estado)
    for estado in set(estados)
}

print(contagem)

Saída:

{'SP': 8, 'ES': 6, 'MG': 7, 'RJ': 2}

10. Agrupamento e soma de colaboradores por estado

funcionarios = [
    ('SP', 16), ('ES', 8), ('MG', 9), ('MG', 6),
    ('SP', 10), ('MG', 4), ('ES', 9), ('ES', 7),
    ('ES', 12), ('SP', 7), ('SP', 11), ('MG', 8),
    ('ES', 8), ('SP', 9), ('RJ', 13), ('MG', 5),
    ('RJ', 9), ('SP', 12), ('MG', 10), ('SP', 7),
    ('ES', 14), ('SP', 10), ('MG', 12)
]

# Agrupamento
agrupados = {
    estado: [qtd for uf, qtd in funcionarios if uf == estado]
    for estado in set(uf for uf, _ in funcionarios)
}

print(agrupados)

# Soma por estado
soma_funcionarios = {
    estado: sum(valores)
    for estado, valores in agrupados.items()
}

print(soma_funcionarios)

Saída:

{
 'SP': [16, 10, 7, 11, 9, 12, 7, 10],
 'ES': [8, 9, 7, 12, 8, 14],
 'MG': [9, 6, 4, 8, 5, 10, 12],
 'RJ': [13, 9]
}

{
 'SP': 82,
 'ES': 58,
 'MG': 54,
 'RJ': 22
}
1 resposta

Oi! Como vai?

Agradeço por compartilhar sua solução com a comunidade Alura.

É isso aí! Você aplicou bem a compreensões de listas e dicionários ao longo dos exercícios. Sua resolução demonstra entendimento de estruturas de dados como listas, tuplas e dicionários, além do uso de sum(), zip() e enumerate(). Também chamou atenção a organização das soluções, deixando cada exercício claro e objetivo.

Compartilho tamém a função sorted() que serve para organizar resultados quando precisar apresentar dados de forma ordenada. Veja este exemplo:


nomes = ['Pedro', 'Julia', 'Otavio']

nomes_ordenados = sorted(nomes)

print(nomes_ordenados)

Esse código cria uma nova lista com os nomes organizados em ordem alfabetica, o que pode ser util em relatorios e analises de dados.

Qual dos desafios você considerou mais interessante ou desafiador de resolver?

Alura

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