Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sandson Costa

Como imprimir o saldo em ordem crescente e calcular juros

Recommended Posts

Pessoal eu tenho um trabalho na qual eu devo reproduzir a seguinte tabela: inserir a descrição da imagem aquiEu não tenho muito conhecimento em python e estou dando o meu melhor para tentar reproduzir ela. Mas estou conseguindo retornar somente desta maneira. inserir a descrição da imagem aquiMinhas dúvidas são as seguintes:

  1. O mês eu não sei como colocar na ordem crescente e nem retirar o 0 no final.
  2. Do saldo inicial ao saldo final eu consigo imprimir, o problema é que ele imprime até 0.
  3. Não sei a lógica da prestação.
  4. Não sei a lógica dos Juros (quadro verde).
  5. Não sei a lógica dos juros mensais (quadro vermelho).
  6. Não sei como imprimir o saldo final (que nesse caso é o inverso do saldo inicial).

Segue abaixo o meu código:

# enconding: utf-8
########################################
# VERSÃO UTILIZADA: Python 3.6.5       #
# DISCIPLINA: Introdução à Programação #
########################################

#########################################
# Informações de entrada dada pelo user #
#########################################

import os

valor_financiamento = float ( input ("1. Informe o valor a ser financiado: "))
os.system("cls")
prazo = int ( input ("2. Informe o prazo de quitação do financiamento (em meses): "))
os.system("cls")
taxa_juros_anual = float (input ("3. Informe a taxa de juros anual (em %): "))
os.system("cls")


# Início da programação e cálculo
# USO DO SISTEMA SAC       


# O cálculo da amortização é realizado pelo valor do financiamento divido pela quantidade de meses
amortizacao = valor_financiamento / prazo

saldo_devedor = valor_financiamento - amortizacao

taxa_mensal = taxa_juros_anual / prazo

juros_mes = (taxa_juros_anual - 1 + 1 ) * amortizacao * taxa_mensal

prestacao = amortizacao + juros_mes
#valor_financiamento = str (valor_financiamento).replace('.',',')


#print ("AMORTIZAÇÃO: R$ %.2f" % amortizacao)
#print ("VALOR DO FINANCIAMENTO: R$ %.2f\n\n" % valor_financiamento)
print ("\t FINANCIAMENTO = R$ %.2f \t MESES: %i meses \t TAXA: %i%% ano (%.f%)" % (valor_financiamento, prazo, taxa_juros_anual, juros_mes))
print ("\t","-"*80,"\n")
print ("\t MÊS\tSALDO INICIAL\tPRESTAÇÃO\tAMORTIZAÇÃO\tJUROS\tSALDO FINAL")
print ("\t ---\t-------------\t---------\t-----------\t-----\t-----------")

print ("\t%4.i \t %12.2f \t\t\t %10.2f" % (prazo, valor_financiamento, amortizacao))
for p in range(prazo):
    while (valor_financiamento > 1):
        valor_financiamento = valor_financiamento - amortizacao # Saldo devedor
        prazo = prazo - 1 # Referência do mês
        saldo_devedor = valor_financiamento - amortizacao
        saldo_final = saldo_devedor - amortizacao
        print ("\t%4.i \t %12.2f \t\t\t %10.2f" % (prazo, valor_financiamento, amortizacao)) #% valor_financiamento)
        #print (prazo)

Essa questão é uma questão de financiamento imobiliário segundo o sistema SAC:

Questão

Construa um programa que gere uma tabela com os valores das prestações mensais de um financiamento, discriminando os valores referentes à amortização e aos juros a serem pagos até a amortização total do financiamento. Este programa deve apresentar um menu de opções e pedir as seguintes informações ao usuário: Valor financiado, Prazo (em meses) para quitação do financiamento, Taxa de juros anual (em percentual) e o Sistemática de pagamento mensal das prestações (Sistema de Amortização Constante – SAC ou Sistema PRICE - ver nota explicativas em anexo). Funcionalidades adicionais serão bem vindas!

O valor de um financiamento deve ser restituído (amortizado) ao financiador em certo período de tempo, acrescido dos juros. Amortizar significa reduzir o valor da dívida, ou seja, pagar uma parte da dívida periodicamente para que ela reduza de tamanho até a sua eliminação. Como a dívida implica em cobrança de juros, para amortiza-la é necessário que a prestação seja maior que os juros cobrados em cada período, ou seja, AMORTIZAÇÃO = PAGAMENTO – JUROS (o valor amortizado é o que sobra depois de descontados os juros). Os juros só incidem sobre o saldo devedor, onde SALDO DEVEDOR = DÍVIDA INICIAL – VALOR AMORTIZADO. As formas de amortizar financiamentos são denominados de “Sistemas de Amortização”.

Sistema de Amortização Constante (SAC): Neste sistema, o saldo devedor é reembolsado periodicamente em valores de amortização iguais. Desta forma, o valor das prestações é decrescente, já que os juros diminuem a cada prestação. O valor da amortização é calculado dividindo-se o valor do principal (valor do financiamento) pelo número de períodos de pagamento, ou seja, de parcelas. Assim,

 Valor da amortização: AMORTIZAÇÃO = PRINCIPAL / N

 Valor dos juros no mês T: JUROST = (N - T + 1) * AMORTIZAÇÃO * TAXA

 Valor da parcela em T: PRESTAÇÃOT = AMORTIZAÇÃO + JUROST

onde: PRINCIPAL é o valor do financiamento, N é o número de meses do financiamento, T denota o mês em questão e TAXA é a taxa de juros mensal (que deve ser obtida a partir da taxa anual).

Se alguém puder me ajudar pelo menos com a lógica. Já é um grande começo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por LuizH.M
      from urllib.request import urlopen   response = urlopen("http://vimeo.com/api/v2/video/57733101.json").read().decode('utf8') dados = json.loads(response)[0] print(dados)   print('Titulo: ',dados['title']) print('URL: ',dados['url']) print('Duração',dados['duration'])     a parte do json fala que não está definida   me ajudem pls    estou usando o visual studio
       
    • Por Marcosvn
      Quero desenvolver um site semelhante a esse: https://www.catalogosofertas.com.br/ 
       
      No qual eles enviam diversas ofertas e encartes recentes de lojas em geral e supermercados. Eles possuem muito conteúdo que são atualizados frequentemente, no entanto, muitos dos supermercados, por exemplo, não possuem os folhetos de cada cidade em seus sites. De modo que pudesse criar um scraper pra ficar acompanhando as atualizações. 
       
      Ao mesmo tempo não imagino que eles tenha muitos funcionários fazendo isso, pois são muitas lojas e supermercados que o encarte vence em alguns dias. Oq me faz pensar que manualmente é inviável manter as atualizações.
       
      Queria saber de vocês, que tem experiência com a área ou mesmo que já tenham trabalhado em projetos semelhantes, como posso me organizar para fazer isso acontecer assim como no site de exemplo: https://www.catalogosofertas.com.br/ 
       
      Como posso fazer isso ? Realmente teria q ficar criando diversos scraper e códigos pra ficar acompanhando os encartes de cada loja e supermercado?
       
      Qual dica, sugestão , orientação poderá me ser muito útil, pois estou confuso sobre como fazer isso acontecer.
    • Por Bruno Soares Slva
      Boa tarde pessoal,
      Estou com problemas para criar um robô. O mesmo esta dando na linha em negrito. Segue abaixo o erro que está aparecendo. Alguma informação. Estou usando o VSCode versão: 1.73.0, Python versão 3.8.0, chromedriver versão 18 (antepenúltima). Segue código e erro abaixo:
       
      Erro mostrado: 
       
      Windows PowerShell
      Copyright (C) Microsoft Corporation. Todos os direitos reservados.        
      Experimente a nova plataforma cruzada PowerShell https://aka.ms/pscore6   
      PS C:\Users\soare\Documents\Estudos\Python\projectCourse>  & 'C:\Users\soare\AppData\Local\Programs\Python\Python38\python.exe' 'c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher' '52080' '--' 'c:\Users\soare\Documents\Estudos\Python\projectCourse\projeto1\roboweb1.py'
      Traceback (most recent call last):
        File "C:\Users\soare\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 192, in _run_module_as_main
          return _run_code(code, main_globals, None,
        File "C:\Users\soare\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 85, in _run_code
          exec(code, run_globals)
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy\__main__.py", line 39, in <module>
          cli.main()
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 430, in main
          run()
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 284, in run_file
          runpy.run_path(target, run_name="__main__")
      PS C:\Users\soare\Documents\Estudos\Python\projectCourse>  c:; cd 'c:\Users\soare\Documents\Estudos\Python\projectCourse'; & 'C:\Users\soare\AppData\Local\Programs\Python\Python38\python.exe' 'c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher' '52168' '--' 'c:\Users\soare\Documents\Estudos\Python\projectCourse\projeto1\roboweb1.py' 
      Traceback (most recent call last):
        File "C:\Users\soare\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 192, in _run_module_as_main
          return _run_code(code, main_globals, None,
        File "C:\Users\soare\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 85, in _run_code
          exec(code, run_globals)
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy\__main__.py", line 39, in <module>
          cli.main()
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 430, in main
          run()
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 284, in run_file
          runpy.run_path(target, run_name="__main__")
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 320, in run_path
          code, fname = _get_code_from_file(run_name, path_name)
        File "c:\Users\soare\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 294, in _get_code_from_file
          code = compile(f.read(), fname, 'exec')
        File "c:\Users\soare\Documents\Estudos\Python\projectCourse\projeto1\roboweb1.py", line 17
          driver = webdriver.Chrome('C:\Users\soare\Documents\Estudos\Python\chromedriver', options=options)
                                    ^
      SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
      PS C:\Users\soare\Documents\Estudos\Python\projectCourse> 
       
       
      Obsrvação: 
      O erro está caindo nesta linha
      driver = webdriver.Chrome('C:\Users\soare\Documents\Estudos\Python\chromedriver', options=options)
       
       
       
      Codigo:
          from selenium import webdriver from selenium.webdriver.common.keys import Keys import time   options = webdriver.ChromeOptions() options.add_argument('--disable-logging') options.add_argument('--log-level=3')     driver = webdriver.Chrome('C:\Users\soare\Documents\Estudos\Python\chromedriver', options=options) driver.get("https://registro.br/")   pesquisa = driver.find_elements_by_id('is-avail-field') pesquisa.clear() pesquisa.send_keys('roboscompython.com.br') pesquisa.send_keys(Keys.RETURN)   time.sleep(8) driver.close()

         
       
       
       
       
       
       
       
       
       
    • Por Rafael Castelhano
      Boa tarde,
       
      Estou tentando criar uma imagem dinamicamente por javascript e carregá-la no input do formulário, apesar da imagem ser gerada corretamente, ao validar o formulário no python é retornado um erro alegando que o arquivo de imagem é inválido ou está corrompido.
       
      Segue gist com o código:
      https://gist.github.com/castelhano/bd72947e13421606453798bbf219cc74
    • Por frogzinkk
      rom itertools import count import time cores = {'verde': '\033[32m', 'amarelo': '\033[33m', 'vermelho': '\033[31m', 'azul': '\033[34m', 'limpar': '\033[m' } servicos = '0' while servicos != '4': print('{}━━━━━━◇◆◇━━━━━━'.format(cores['azul'])*2) print('Seja Bem Vindo ao FrogBank') print('━━━━━━◇◆◇━━━━━━'*2) servicos = str(input('{}{}\nEscolhas o Serviço Desejado!\n[1]Saldo\n[2]Emprestimo\n[3]Transferencia\n[4]Sair{}\n\n'.format( cores['limpar'], cores['amarelo'], cores['limpar']))) class operacoes: saldo_possui = 10 saldo_atual = 0 if servicos == '1': print('\n{}Saldo disponivel: {}\nAguarde o retorno automatico.{}'.format( cores['verde'], saldo_possui+saldo_atual, cores['limpar'])) time.sleep(5) elif servicos == '2': emprestimo = float( input('\nDigite o Valor do Emprestimo Desejado:')) salario = float(input('\nDigite o Valor do Seu Salario:')) anos = float( input('\nDigite Quantos Anos de Parcelamento Deseja?')) messes = anos * 12 valor_parcelas = emprestimo / messes valor_minimo_parcelas = salario * 30 / 100 if valor_parcelas <= valor_minimo_parcelas: saldo_atual = saldo_possui + emprestimo print('{}Emprestimo Aprovado! Seu saldo atual é: {}\n\n Aguarde o retorno automatico.{}'.format( cores['verde'], saldo_atual, cores['limpar'])) time.sleep(5) else: print('{}Emprestimo Recusado! Aguarde o retorno automatico.{}'.format( cores['vermelho'], cores['limpar'])) elif servicos == '3': saldo_possui = 10 input( '\nDigite o numero da conta na qual deseja realizar uma transferencia:\n') print('\n{}Processando...{}\n'.format( cores['verde'], cores['limpar'])) time.sleep(5) valor_transferencia = float( input('Digite o valor da transferencia\n')) print('\nProcessando...\n'.format(cores['verde'], cores['limpar'])) time.sleep(5) if valor_transferencia > saldo_possui: print('{}Voce nao possui saldo para esta ação.{}'.format( cores['vermelho'], cores['limpar'])) input('Digite o valor da transferencia\n') else: valor_transferencia == saldo_possui print( '\n{}Transferencia Realizada com sucesso! Aguarde o retorno automatico.{}\n'.format(cores['verde'], cores['limpar'])) time.sleep(5)
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.