1
resposta

Praticando Python : condicionais if, elif e else

Aprovando empréstimo

def emprestimo(salario, valor_parcela):
  try:
    REQUISITO_RENDA = 2000.00
    PARCELA_LIMITE = salario * 0.30 
    if salario < REQUISITO_RENDA:
      raise ValueError(f"Emprestimo negado! O salário deve ser no mínimo R${REQUISITO_RENDA:.2f} para ser aprovado!")
    elif valor_parcela > PARCELA_LIMITE:
      raise ValueError(f"Emprestimo negado! O valor da parcela não pode ser superior a R${PARCELA_LIMITE:.2f}")
    else:
      print(f'Emprestimo aprovado! O valor da parcela é de R${valor_parcela:.2f}')
  except ValueError as e:
     print(f"Erro: {e}")
  finally:
      print("Operação concluida!")

salario = float(input("Digite o valor da sua renda mensal: "))
valor_parcela = float(input("Digite o valor da parcela desejada: "))

emprestimo(salario, valor_parcela)
1 resposta

Olá, Esdras. Como vai?

Parabéns pela implementação! É muito interessante ver como você evoluiu a estrutura do código em comparação aos exercícios anteriores, utilizando agora uma função (def) e o comando raise para personalizar o lançamento de exceções dentro do bloco try-except.

Essa abordagem de usar o raise ValueError é muito comum em sistemas profissionais para interromper o fluxo de execução quando uma regra de negócio (como o limite da parcela) não é atendida.

Para agregar ainda mais valor ao seu desenvolvimento em Python, deixo aqui algumas observações técnicas e boas práticas:

  • Regras de Negócio Dinâmicas: Você definiu REQUISITO_RENDA e PARCELA_LIMITE dentro da função. Isso é ótimo para a legibilidade. Uma sugestão para tornar sua função ainda mais flexível seria passar esses valores como argumentos opcionais, permitindo que o banco altere as regras sem precisar mexer no "corpo" da função.
  • Cálculo da Margem Consignável: O cálculo da parcela limite que você utilizou (30% do salário) é o padrão utilizado em muitas instituições financeiras. Matematicamente, a sua expressão está perfeita e bem aplicada no elif:
    PARCELA_LIMITE = salario * 0.30
  • Melhoria no Fluxo de Dados: Atualmente, sua função imprime o resultado diretamente. Em aplicações reais, é comum que a função retorne um valor (como True ou False) para que outra parte do sistema saiba como proceder.

Veja como você poderia isolar a lógica da interface:

def avaliar_emprestimo(salario, valor_parcela):
    REQUISITO_RENDA = 2000.00
    margem_disponivel = salario * 0.30
    
    if salario < REQUISITO_RENDA:
        return False, f"Renda mínima insuficiente (Mínimo: R${REQUISITO_RENDA:.2f})"
    if valor_parcela > margem_disponivel:
        return False, f"Parcela excede a margem de 30% (Máximo: R${margem_disponivel:.2f})"
    
    return True, "Empréstimo aprovado com sucesso!"

# Uso prático
try:
    renda = float(input("Renda mensal: "))
    parcela = float(input("Valor da parcela: "))
    
    aprovado, mensagem = avaliar_emprestimo(renda, parcela)
    
    if aprovado:
        print(f"Sucesso: {mensagem}")
    else:
        print(f"Atenção: {mensagem}")
except ValueError:
    print("Erro: Digite apenas valores numéricos válidos.")

Essa separação facilita a criação de testes automáticos e deixa o seu código muito mais próximo do que encontramos em grandes projetos. Continue explorando essas possibilidades com o Python!

Espero que possa ter lhe ajudado!