1
resposta

[Projeto] Desafio - Aplicando a projetos

Consegui fazer boa parte dos desafios, mas quando fui comparar os desafios 9 e 10 com a opinião do instrutor, eu vi que ficou bem diferente do que desenvolvi - apesar de ambos darem o mesmo resultado.

#DESAFIO APLICANDO A PROJETOS

#6. Uma loja possui um banco de dados com a informação de venda de cada representante e de cada ano e precisa filtrar somente os dados do ano


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)]

vendas_especificas = [venda[1] for venda in vendas if venda[0] == '2022' and venda[1] > 6000]
print(vendas_especificas)

#7. Uma clínica analisa dados de pacientes e armazena o valor numérico da glicose em um banco de dados e gostaria de rotular os dados da seguinte maneira:


dados_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_glicemia = [('Hipoglicemia',glicemia) if glicemia <= 70
                   else ('Normal',glicemia) if 70 < glicemia <= 99
                   else ('Alterada',glicemia) if 100 <= glicemia <= 125
                   else ('Diabetes',glicemia)
                   for glicemia in dados_glicemia]

print(lista_glicemia)

#8. Um e-commerce possui as informações de id de venda, quantidade vendida e preço do produto divididos nas seguintes listas:


ids = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
quantidades = [15, 12, 1, 15, 2, 11, 2, 12, 2, 4]
precos = [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') if i == -1 else (ids[i], quantidades[i], precos[i], quantidades[i] * precos[i]) for i in range(-1, 10)]
print(tabela)


#9. Uma empresa possui filiais espalhadas nos Estados da região Sudeste do Brasil. 
#Em uma das tabelas de cadastro das filiais há uma coluna contendo a informação de qual é o Estado a que pertence: 
#A empresa sempre está abrindo novas filiais, de modo que a tabela está constantemente recebendo novos registros e o gestor gostaria de possuir
#a informação atualizada da quantidade de filiais em cada Estado.
#A partir da coluna com a informação dos Estados, crie um dicionário usando dict comprehension com a chave sendo o nome de um Estado e o valor
#sendo a contagem de vezes em que o Estado aparece na lista.
#Dica: Você pode fazer um passo intermediário para gerar uma lista de listas em que cada uma das listas possui o nome de apenas um Estado com valores repetidos.

estados_filiais = ['SP', 'ES', 'MG', 'MG', 'SP', 'MG', 'ES', 'ES', 'ES', 'SP', 'SP', 'MG', 'ES', 'SP', 'RJ', 'MG', 'RJ', 'SP', 'MG', 'SP', 'ES', 'SP', 'MG']
estados = set(estados_filiais)

filiais = []
for estado in estados:
  i = 0
  for filial in estados_filiais:
    if estado == filial: i += 1
  filiais.append(i)

dicionario_estados_filiais = {estado:filial for estado, filial in zip(estados, filiais)}
print(dicionario_estados_filiais)


#10. Nessa mesma tabela de cadastro de filiais, há uma coluna com as informações da quantidade de pessoas colaboradoras e o(a) gestor(a) gostaria 


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)]

estados, colaboradores = zip(*funcionarios)
estados = set(list(estados))

colaboradores = []
for estado in estados:
  colaborador = 0
  for estado_lista, funcionarios_lista in funcionarios:
    if estado == estado_lista: colaborador += funcionarios_lista
  colaboradores.append(colaborador)

dicionario_estados_colaboradores = {estado:colaborador for estado, colaborador in zip(estados, colaboradores)}
print(dicionario_estados_colaboradores)
1 resposta

Olá, Vinicius! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de list comprehension para filtrar e transformar dados com precisão, utilizou muito bem estruturas de repetição para calcular totais e ainda compreendeu a importância dos dicionários para organizar informações agregadas por categoria.

Uma dica interessante para o futuro é simplificar os desafios 9 e 10 usando a função collections.Counter ou defaultdict, que tornam o código mais enxuto e direto. Assim:

from collections import Counter

# Desafio 9
contagem_filiais = Counter(estados_filiais)
print(dict(contagem_filiais))

# Desafio 10
from collections import defaultdict

colaboradores_por_estado = defaultdict(int)
for estado, qtd in funcionarios:
    colaboradores_por_estado[estado] += qtd
print(dict(colaboradores_por_estado))

Isso faz com que o código fique mais legível e eficiente, especialmente em cenários com grandes volumes de dados.

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!