Oi pessoal, tudo bem? Vi que a minha solução para a questão 13 do módulo 05 ficou um pouco diferente da resposta proposta na aula. Como os cálculos propostos na resposta fazem algumas consistências que eu não fiz, fiquei um pouco inseguro se minha solução funciona da mesma forma ou se deixei alguma coisa passar batido. Conseguem me ajudar a fazer essa validação? Meu código segue logo abaixo.
#lista com os salários elegíveis
relacao_salarios_elegiveis = [1172, 1644, 2617, 9130, 5532, 6341, 6650, 7238, 7685, 7782, 7903]
#criação de dicionário vazio
dic_salarios_abonados = {}
#inicio do contador para registrar a quantidade de salários que foram corrigidos para o mínimo
soma_corrigidos = 0
#inicio do contador para registrar o maior abono recebido
cont_maior_abono = 0
#laço para calcular o valor do abono com 10% do salário
for salarios_elegiveis in relacao_salarios_elegiveis:
salarios_abonados = 0.1 * salarios_elegiveis
#incremento o dicionário iniciado com os seus respectivos valores de abono
dic_salarios_abonados[salarios_elegiveis] = salarios_abonados
#condição para verificar se o salário abonado está abaixo do mínimo e imprime quais foram os salários que entraram nesta condição
if salarios_abonados <= 200:
print(f'O(s) salários {salarios_elegiveis} será/serão ajustados para o valor mínimo de abono')
#laço para atualizar o dicionário de salários aplicando o valor mínimo nos salários elegíveis, aqui eu não sei se daria para otimizar para inserir essa
#lógica no for alí de cima
for abono in dic_salarios_abonados.values():
if abono <= 200:
#transformo todo abono menod ou igual 200 em 200
abono_corrigido = 200
#atualizo o dicionário com a aplicação dos abonos mínimosb
dic_salarios_abonados[salarios] = abono_corrigido
#laço para calcular a soma total dos abonos e mostrar o maior abono/salário
for salarios_corrigidos in dic_salarios_abonados.keys():
#atualizo o registrador de salários corrigidos com valor do salário que está passando pelo lasso
soma_corrigidos = soma_corrigidos + dic_salarios_abonados[salarios_corrigidos]
#condição para verificar se o valor que está passando pelo lasso é maior do que o que está guardado no registrador
if dic_salarios_abonados[salarios_corrigidos] > cont_maior_abono:
#grava o maior abono do dicionário de salários
cont_maior_abono = dic_salarios_abonados[salarios_corrigidos]
#grava o maior salário
cont_maior_salario = salarios_corrigidos
#mostrando os resultados
print(f'O maior salário a ser abonado é o R$ {cont_maior_salario} com valor de R$ {cont_maior_abono}')
print(f'A soma total em gratificações será de: R$ {soma_corrigidos}')
print(f'{cont_abono} salários receberão o valor mínimo de abono')
Além disso, no trecho abaixo, eu não consegui otimizar para fazer com que o cálculo do abono E a atualização do dicionário fossem feitos no mesmo for. Não sei porque, mas achei que não estou sendo eficiente aqui. Será que tem algum jeito de melhorar?
#laço para atualizar o dicionário de salários aplicando o valor mínimo nos salários elegíveis, aqui eu não sei se daria para otimizar para inserir essa
#lógica no for alí de cima
for abono in dic_salarios_abonados.values():
if abono <= 200:
#transformo todo abono menod ou igual 200 em 200
abono_corrigido = 200
#atualizo o dicionário com a aplicação dos abonos mínimosb
dic_salarios_abonados[salarios] = abono_corrigido
Uma outra dúvida é que percebi que nas resoluções não é usado as funções embutidas de "sum", por exemplo. Existe algum motivo especial ou é somente para exercitar a construção da lógica de diferentes formas.
Desde já, muito obrigado! Estou gostando muito dos exercícios propostos. Diferentemente de outros cursos, aqui eles são desafiadores e tem me feito gastar um tempo considerável "matutando" sobre as resoluções.