Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Momento dos projetos parte 02

  1. Uma pesquisa de mercado foi feita para decidir qual design de marca infantil mais agrada as crianças. A pesquisa foi feita e o votos computados.
    Adapte os dados fornecidos para uma estrutura de dicionário. A partir dele, informe o design vencedor e a porcentagem de votos recebidos.
votos = {
    "Design 1": 1334,
    "Design 2": 982,
    "Design 3": 1751,
    "Design 4": 210,
    "Design 5": 1811
}

# Total de votos
total_votos = sum(votos.values())
# Design vencedor
design_vencedor = max(votos, key=votos.get)
# Porcentagem de votos do vencedor
porcentagem_vencedor = (votos[design_vencedor] / total_votos) * 100
print(f"Design vencedor: {design_vencedor}")
print(f"Votos recebidos: {votos[design_vencedor]}")
print(f"Porcentagem de votos: {porcentagem_vencedor:.2f}%")
  1. As pessoas colaboradoras de um setor da empresa que você trabalha vão receber um abono correspondente a 10% do salário devido ao ótimo desempenho do time. O setor financeiro solicitou sua ajuda para a verificação das consequências financeiras que esse abono irá gerar nos recursos. Assim, foi encaminhada para você uma lista com os salários que receberão o abono: [1172, 1644, 2617, 5130, 5532, 6341, 6650, 7238, 7685, 7782, 7903]. O abono de cada colaborador(a) não pode ser inferior a 200. Em código, transforme cada um dos salários em chaves de um dicionário e o abono de cada salário no elemento. Depois, informe o total de gastos com o abono, quantos(as) colaboradores(as) receberam o abono mínimo e qual o maior valor de abono fornecido.
salarios = [1172, 1644, 2617, 5130, 5532, 6341, 6650, 7238, 7685, 7782, 7903]
abonos = {}
for salario in salarios:
    abono = salario * 0.10

    if abono < 200:
        abono = 200

    abonos[salario] = abono
total_gastos = sum(abonos.values())
colaboradores_abono_minimo = 0
for abono in abonos.values():
    if abono == 200:
        colaboradores_abono_minimo += 1
maior_abono = max(abonos.values())
print("Dicionário de abonos:")
print(abonos)
print(f"\nTotal de gastos com abono: R$ {total_gastos:.2f}")
print(f"Quantidade de colaboradores(as) que receberam o abono mínimo: {colaboradores_abono_minimo}")
print(f"Maior valor de abono fornecido: R$ {maior_abono:.2f}")
  1. Uma equipe de cientistas de dados está estudando a diversidade biológica em uma floresta. A equipe fez a coleta de informações sobre o número de espécies de plantas e animais em cada área dessa floresta e armazenou essas informações em um dicionário. Nele, a chave descreve a área dos dados e os valores nas listas correspondem às espécies de plantas e animais nas áreas, respectivamente.
    {'Área Norte': [2819, 7236],
    'Área Leste': [1440, 9492],
    'Área Sul': [5969, 7496],
    'Área Oeste': [14446, 49688],
    'Área Centro': [22558, 45148]}
    Escreva um código para calcular a média de espécies por área e identificar a área com a maior diversidade biológica. Dica: use as funções built-in sum() e len().
especies = {
    "Área Norte": [2819, 7236],
    "Área Leste": [1440, 9492],
    "Área Sul": [5969, 7496],
    "Área Oeste": [14446, 49688],
    "Área Centro": [22558, 45148]
}
medias_por_area = {}
for area, valores in especies.items():
    media = sum(valores) / len(valores)
    medias_por_area[area] = media
area_maior_diversidade = max(medias_por_area, key=medias_por_area.get)
print("Média de espécies por área:")
for area, media in medias_por_area.items():
    print(f"{area}: {media:.2f}")
print(f"\nÁrea com maior diversidade biológica: {area_maior_diversidade}")
print(f"Média de espécies: {medias_por_area[area_maior_diversidade]:.2f}")
  1. O setor de RH da sua empresa te pediu uma ajuda para analisar as idades de colaboradores(as) de 4 setores da empresa.
    Sabendo que cada setor tem 10 colaboradores(as), construa um código que calcule a média de idade de cada setor, a idade média geral entre todos os setores e quantas pessoas estão acima da idade média geral.
idades = {
    "Setor A": [22, 26, 30, 30, 35, 38, 40, 56, 57, 65],
    "Setor B": [22, 24, 26, 33, 41, 49, 50, 54, 60, 64],
    "Setor C": [23, 26, 26, 29, 34, 35, 36, 41, 52, 56],
    "Setor D": [19, 20, 25, 27, 34, 39, 42, 44, 50, 65]
}

medias_setores = {}
for setor, lista_idades in idades.items():
    media = sum(lista_idades) / len(lista_idades)
    medias_setores[setor] = media
todas_idades = []
for lista_idades in idades.values():
    todas_idades.extend(lista_idades)

media_geral = sum(todas_idades) / len(todas_idades)
acima_da_media = 0
for idade in todas_idades:
    if idade > media_geral:
        acima_da_media += 1
print("Média de idade por setor:")
for setor, media in medias_setores.items():
    print(f"{setor}: {media:.2f} anos")

print(f"\nIdade média geral: {media_geral:.2f} anos")
print(f"Quantidade de pessoas acima da média geral: {acima_da_media}")
1 resposta
solução!

Olá, Cássio. Como vai?

É um prazer acompanhar a sua jornada! Mais uma vez, você entregou soluções excelentes para a segunda parte dos desafios. A sua lógica está extremamente limpa e estruturada, utilizando funções nativas do Python como max(), sum() e extend() de forma muito precisa e inteligente.

Gostaria de destacar alguns pontos altos dos seus códigos e trazer algumas sugestões técnicas que vão te ajudar a deixar seus scripts ainda mais compactos e alinhados com as melhores práticas do mercado de dados:


1. Otimização no Exercício 2 (Abonos do Setor Financeiro)

A sua lógica para calcular a regra de abono mínimo ficou perfeita. No Python, quando precisamos aplicar um limite mínimo (ou máximo) a um valor, podemos substituir a estrutura de if/else pela função built-in max().

Dessa forma, o código seleciona automaticamente o maior valor entre o cálculo e o piso estipulado (R$ 200,00):

# Substituindo o bloco IF por uma linha mais limpa:
for salario in salarios:
    abono = max(salario * 0.10, 200)
    abonos[salario] = abono

2. Simplificação com Dicionários por Compreensão

No Exercício 3 (Diversidade Biológica), você criou um loop para calcular a média de cada área e armazenou em um novo dicionário. No Python, quando transformamos um dicionário em outro, podemos utilizar uma técnica elegante chamada Dictionary Comprehension (Dicionários por Compreensão).

Ela permite resumir o loop de cálculo em uma única linha de código:

# Versão compacta usando Dictionary Comprehension
medias_por_area = {area: sum(valores) / len(valores) for area, valores in especies.items()}

3. Evitando Loops Repetidos no Exercício 4 (Setores de RH)

No seu último código, você usou um laço for para calcular as médias dos setores e, logo depois, abriu outro laço idêntico para juntar todas as idades na lista todas_idades usando o .extend().

Podemos otimizar o processamento do script realizando as duas tarefas dentro de um único loop, economizando memória e tempo de execução:

medias_setores = {}
todas_idades = []

# Unificando as duas ações em um único laço for
for setor, lista_idades in idades.items():
    medias_setores[setor] = sum(lista_idades) / len(lista_idades)
    todas_idades.extend(lista_idades)

media_geral = sum(todas_idades) / len(todas_idades)
  • Dica extra: Para fazer a contagem de pessoas acima da média sem precisar de um laço for completo de várias linhas, você pode usar uma List Comprehension junto com a função len(), o que é muito comum em análise de dados:
acima_da_media = len([idade for idade in todas_idades if idade > media_geral])

Parabéns pela dedicação na resolução de toda a série de projetos e pela consistência nos seus estudos de Python para Dados!

Espero que possa ter lhe ajudado!