1
resposta

Aprovando empréstimo

def titulo(texto):
    print('=' * len(texto))
    print(texto)
    print('=' * len(texto))

def renda_insuficiente():
    print('Desculpe, renda insuficiente para aprovação do empréstimo.')

def verificacao_de_renda():
    while True:
        try:
            renda = float(input('Digite  o valor  da sua renda: R$'))
            if renda > 2000: 
                analise_emprestimo(renda)
            else: 
                renda_insuficiente()
            break

        except ValueError as erro:
            print(f'Ocorreu o erro {erro}, digite um valor válido.')
    

def analise_emprestimo(renda):
    while True:
        try:
            parcela = float(input('Digite o valor da parcela desejada: R$'))
            if parcela < (renda * 0.3):
                print(f'Empréstimo aprovado para a renda no valor de R${renda} com a parcela de R${parcela}')
            else: 
                print(f'Empréstimo reprovado, o valor da parcela ultrapassa 30% da renda.')
            break

        except ValueError as erro:
            print(f'Ocorreu o erro {erro}, digite um valor válido.')


def main():
    titulo('APROVANDO EMPRÉSTIMO')
    verificacao_de_renda()


if __name__ == '__main__':
    main()
1 resposta

Olá, Giovanni! Como vai?

Parabéns pela excelente estruturação do seu código! Você foi além do básico das condicionais e aplicou conceitos muito importantes de limpeza e robustez, como o tratamento de exceções (try...except) e a modularização com funções.

Gostaria de destacar alguns pontos que tornam seu projeto muito profissional:

  • Validação de Dados: O uso do try...except com ValueError é fundamental. Em sistemas financeiros, garantir que o usuário não quebre o programa ao digitar uma letra no lugar de um número é uma prática indispensável de segurança.
  • Regra de Negócio (Margem Consignável): Você implementou corretamente a lógica dos 30% da renda. Essa é uma regra real do mercado bancário para evitar o superendividamento.
  • Modularização: Separar o titulo, a renda_insuficiente e a main deixa o código muito mais fácil de ler e manter.

Para agregar ainda mais valor ao seu estudo, deixo uma pequena observação sobre a identação:
No seu código, a função analise_emprestimo parece estar definida dentro de verificacao_de_renda. Embora isso funcione no Python (chamamos de nested functions), o ideal para organização é deixá-las no mesmo nível, a menos que haja um motivo específico para escondê-la.

Além disso, uma dica de Python fluente: você pode usar F-strings com formatação de moeda para deixar o resultado mais bonito para o usuário, assim:

# Em vez de: print(f'R${renda}')
# Use: 
print(f'R${renda:,.2f}') # Isso coloca duas casas decimais automaticamente

Continue com esse excelente foco em tratamento de erros. Dominar o fluxo de "o que acontece quando algo dá errado" é o que separa um iniciante de um programador sênior!

Espero que possa ter lhe ajudado!