1
resposta

Praticando - Parte 4

Questão 13: Cálculo de Abono Salarial
Código
Python

13) 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 set

Lista de salários

salarios = [1172, 1644, 2617, 5130, 5532, 6341, 6650, 7238, 7685, 7782, 7903]

Inicializamos as variáveis

dic_abonos = {} # Dicionário de abonos
total_abono = 0 # Irá somar todos os gastos com abono
abonos_minimo = 0 # Irá armazenar a quantidade de abonos mínimos
maior_abono = 0 # Irá armazenar o maior valor de abono

Percorremos toda a lista de salários

for salario in salarios:
# Calculamos o valor teórico de abono
abono = salario * 0.1
# Caso o abono seja inferior a 200,
# ajustamos o valor de abono para o mínimo
if abono < 200:
abono = 200
# Adicionamos um novo dado no dicionário chave abono
dic_abonos[salario] = abono

Percorremos todos os valores do dicionário de abonos

for abono in dic_abonos.values():
# Contamos o salário mínimo
if abono == 200:
abonos_minimo += 1
# Verificamos se o abono lido é maior que o valor armazenado em maior_abono
# Cada vez que o abono superar o valor de maior_abono,
# a variável maior_abono vai ser igual à abono, atribuindo um novo valor
if abono > maior_abono:
maior_abono = abono
# Somamos os abonos
total_abono += abono

Resultados

print(f'Abonos: {dic_abonos}')
print(f'Total de gasto com abonos: {total_abono}')
print(f'Número de funcionários que receberam o abono mínimo: {abonos_minimo}')
print(f'Maior valor de abono: {maior_abono}')
Execução / Resultado
Plaintext
Abonos: {1172: 200, 1644: 200, 2617: 261.7, 5130: 513.0, 5532: 5532., 6341: 634.1, 6650: 665.0, 7238: 723.8000000000001, 7685: 768.5, 7782: 778.2, 7903: 790.3000000000001}
Total de gasto com abonos: 6087.8
Número de funcionários que receberam o abono mínimo: 2
Maior valor de abono: 790.3000000000001
Questão 14: Diversidade Biológica em Floresta
Código
Python

14) 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 pl

Dados de diversidade biológica

dados_diversidade = {
'Á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 maior diversidade biológica. Dica: use as funções built-in sum() e len().

maior_diversidade = 0
area_maior_diversidade = ''

print('Média de espécies por área:')
for area, especies in dados_diversidade.items():
total_especies_area = sum(especies)
media_especies_area = total_especies_area / len(especies) # Média de plantas e animais
print(f'- {area}: {media_especies_area:.2f} espécies/subespécies em média.')

if total_especies_area > maior_diversidade:
    maior_diversidade = total_especies_area
    area_maior_diversidade = area

print(f'\nA área com maior diversidade biológica é: {area_maior_diversidade} com um total de {maior_diversidade} espécies/subespécies.')
Execução / Resultado
Plaintext
Média de espécies por área:

  • Área Norte: 5027.50 espécies/subespécies em média.
  • Área Leste: 5466.00 espécies/subespécies em média.
  • Área Sul: 6732.50 espécies/subespécies em média.
  • Área Oeste: 32067.00 espécies/subespécies em média.
  • Área Centro: 33853.00 espécies/subespécies em média.

A área com maior diversidade biológica é: Área Centro com um total de 67706 espécies/subespécies.
Questão 15: Análise de Idades por Setor (RH)
Código
Python

1 resposta

Olá, Nicole. Como vai?

Que excelente sequência de resoluções! Você demonstrou um domínio muito firme sobre estruturas de repetição (for), condicionais (if/else), listas e dicionários no Python. Seus códigos estão bem documentados com comentários e as saídas formatadas com duas casas decimais (:.2f) deixaram os resultados muito profissionais.

Analisando os seus códigos, notei alguns detalhes técnicos bem interessantes sobre o comportamento do Python que vão te ajudar a entender melhor como a linguagem funciona nos bastidores. Vamos a eles:

1. Detalhe na saída do Abono (Ponto Flutuante)

No resultado impresso do seu primeiro exercício, repare que o abono do salário 5532 saiu impresso como 5532. (com o ponto no final) e alguns valores como o do salário 7238 saíram como 723.8000000000001.

  • Por que isso acontece? Computadores processam números com casas decimais (pontos flutuantes) usando o sistema binário. Algumas frações decimais não possuem representação exata em binário, gerando essas dízimas com pequenas sobras no final (imprecisão de ponto flutuante).
  • Como melhorar? Na hora de imprimir o dicionário completo ou os valores isolados, você pode usar a formatação para limitar as casas decimais. No seu print, você pode formatar o valor final do gasto total e do maior abono da mesma forma que fez no exercício 14:
print(f'Total de gasto com abonos: R$ {total_abono:.2f}')
print(f'Maior valor de abono: R$ {maior_abono:.2f}')

2. Otimização com um único laço for (Questão 13)

Na questão 13, você utilizou dois loops for separados: um para calcular os abonos e preencher o dicionário, e outro para fazer as checagens de maior valor, mínimo e soma.

Uma boa prática em desenvolvimento é tentar fazer o máximo de operações correlatas em uma única passada pelo laço. Isso poupa processamento do computador. Veja como centralizar tudo no primeiro for:

for salario in salarios:
    abono = salario * 0.1
    
    if abono < 200:
        abono = 200
        abonos_minimo += 1 # Conta o mínimo diretamente aqui
        
    dic_abonos[salario] = abono
    
    # Atualiza o maior abono e a soma a cada iteração
    if abono > maior_abono:
        maior_abono = abono
        
    total_abono += abono

3. Excelente uso de dicionários (Questão 14)

A sua lógica para descobrir a maior diversidade biológica utilizando a variável acumuladora maior_diversidade e a string area_maior_diversidade funcionou perfeitamente. No Python, quando trabalhamos com dicionários, também temos a opção de usar a função built-in max() combinada com um parâmetro chamado key para descobrir isso de forma direta, mas a sua estrutura com if é perfeita para fixar a lógica de algoritmos.

Seu desempenho ao longo dessa lista de exercícios mostra que você captou perfeitamente os pilares de lógica de programação aplicados à Ciência de Dados com Python.

Espero que possa ter lhe ajudado!