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

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

# Questão 6: Filtre as 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)
]

# lista com as vendas de 2022 maiores que 6000
vendas_filtradas = [
    venda for ano, venda in vendas
    if ano == '2022' and venda > 6000
]

# exibindo a nova lista
print(vendas_filtradas)
# Questão 7: Classifique os valores de 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
]

# lista de tuplas com classificação e valor da glicemia
classificacao = [
    (
        'Hipoglicemia' if valor <= 70
        else 'Normal' if valor <= 99
        else 'Alterada' if valor <= 125
        else 'Diabetes',
        valor
    )
    for valor in glicemia
]

# exibindo a nova lista
print(classificacao)
# Questão 8: Crie uma tabela com id, quantidade, preço e valor total

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]

# criação da tabela
tabela = [('id', 'quantidade', 'preco', 'total')] + [
    (
        id[i],
        quantidade[i],
        preco[i],
        quantidade[i] * preco[i]
    )
    for i in range(len(id))
]

# exibindo a tabela
for linha in tabela:
    print(linha)
# Questão 9: Conte a 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'
]

# criação do dicionário com a contagem dos estados
quantidade_estados = {
    estado: estados.count(estado) for estado in set(estados)
}

# exibindo o dicionário
print(quantidade_estados)
# Questão 10: Agrupe e some a quantidade de funcionários 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)
]

# dicionário com listas de funcionários por estado
funcionarios_estado = {
    estado: [quantidade for uf, quantidade in funcionarios if uf == estado]
    for estado in set(uf for uf, quantidade in funcionarios)
}

# dicionário com a soma de funcionários por estado
soma_funcionarios = {
    estado: sum(valores)
    for estado, valores in funcionarios_estado.items()
}

# exibindo os resultados
print(funcionarios_estado)
print(soma_funcionarios)
2 respostas

Olá, Estudante! Como vai?

Parabéns por concluir essa etapa de aplicação a projetos! Você demonstrou uma excelente capacidade de utilizar List Comprehensions e Dict Comprehensions para resolver problemas típicos de análise de dados, como filtragem, classificação e agregação.

Aqui estão alguns pontos técnicos de destaque nas suas soluções:

1. Filtragem com Desempacotamento (Questão 6)

Ao usar for ano, venda in vendas, você aplicou o desempacotamento de tuplas. Isso torna o código muito mais legível do que acessar índices como venda[0]. A lógica do filtro if ano == '2022' and venda > 6000 está perfeita.

2. Condicionais Aninhadas em Comprehensions (Questão 7)

A Questão 7 é um ótimo exemplo de como usar o operador ternário do Python de forma aninhada. Embora possa ficar visualmente denso, é uma técnica poderosa para transformações rápidas de dados.

3. Construção de Tabelas e Cabeçalhos (Questão 8)

Você teve uma sacada muito boa ao concatenar a lista do cabeçalho [('id', 'quantidade', 'preco', 'total')] com a lista gerada pela compreensão. Isso estrutura os dados de uma forma que facilita a visualização e até a exportação para formatos como CSV no futuro.

4. O Poder do set() para Contagem (Questão 9)

Sua estratégia na Questão 9 foi brilhante:

  • Ao usar set(estados), você eliminou as duplicatas.
  • Isso permitiu que o laço for percorresse cada estado apenas uma vez, usando o .count() para buscar as ocorrências na lista original.

5. Agregação e Dicionários (Questão 10)

A Questão 10 é a mais complexa e você a resolveu de forma muito lógica:

  1. Primeiro, criou um dicionário onde cada chave (Estado) aponta para uma lista de valores.
  2. Depois, usou outro dicionário para aplicar a função sum() sobre essas listas.

Dica Extra para a Questão 10:
Em projetos de larga escala, o Python oferece uma ferramenta na biblioteca padrão chamada defaultdict (dentro do módulo collections). Ela automatiza esse agrupamento e evita que você tenha que percorrer a lista original várias vezes. Veja como ficaria:

from collections import defaultdict

soma_funcionarios = defaultdict(int)
for estado, qtd in funcionarios:
    soma_funcionarios[estado] += qtd

Seu desempenho nos desafios mostra que você está pronto para começar a utilizar bibliotecas de Data Science mais robustas, como o Pandas, que automatiza muitas dessas operações de filtragem e agrupamento que você fez manualmente de forma tão competente!

Espero que possa ter lhe ajudado!

Dessa lista de desafios, qual você achou que exigiu mais do seu raciocínio lógico para estruturar a solução?

solução!

Obrigado pela dica