Todos sabem que é melhor pagar as faturas em dia. No entanto, vários fatores, incluindo crises globais, podem levar ao atraso e aos terríveis encargos. Nestes casos, é sempre bom não entrar em pânico e procurar mecanismos para renegociação, visto que vários credores aceitam o parcelamento da dívida mediante o pagamento de um valor mínimo.
Nesta tarefa, ao manipular valores monetários, você
irá utilizar o tipo float
e aprenderá
conceitos básicos sobre aritmética com ponto flutuante
e também sobre formatação de escrita.
floats
Operações básicas Antes de escrever seu
programa, vamos fazer alguns testes com a linha de comando. Abra um
terminal e o programa python3
:
$ python3
Python 3.7.6
Type "help", "copyright", "credits" or "license" for more information.
>>>
Atribua um número real para a variável valor
e
escreva algumas operações:
>>> valor = 99.99
>>> multa = valor * 0.02
>>> juros = valor * 0.00033
>>> print(multa)
1.9998
>>> print(juros)
0.0329967
Formatação Note que os valores foram exibidos
com mais casas decimais do que as duas usuais para valores
monetários. Podemos formatar o número de casas na
saída por meio do comando format()
:
>>> format(juros, '.2f')
>>> '0.03'
>>> print("R$", format(juros, '.2f'))
R$ 0.03
Abaixo temos duas outras maneiras de se obter esta saída. Para entender melhor o funcionamento destes comandos leia a página Formatação em Python.
>>> "{:.2f}".format(juros)
'0.03'
>>> "%.2f" % juros # estilo antigo - pode não funcionar nas próximas versões de Python
'0.03'
Limitações A exibição de um maior número de casas pode revelar resultados surpreendentes. Observe os valores 0.1
e 0.5
com 30 casas decimais:
>> format(0.1, '.30f')
'0.100000000000000005551115123126'
>>> format(0.5, '.30f')
'0.500000000000000000000000000000'
Para entender a razão destes resultados, veja a seção 15. Floating Point Arithmetic: Issues and Limitations da documentação de Python 3.
A entrada do seu programa será composta por duas linhas, a primeira
contendo um float
representando o valor da fatura e a
segunda um int
representando o número de dias em
atraso.
99.99
3
Dica: você poderá ler este par de valores com os comandos:
valor = float(input())
dias_atraso = int(input())
A saída deverá ser apresentada como descrito a seguir, com strings sem acentos:
Para a entrada da seção anterior, a saída será:
Valor: R$ 99.99
Multa: R$ 2.00
Juros: R$ 0.10
Valor total: R$ 102.09
Valor minimo para renegociacao: R$ 10.20
Note que todos os valores da saída devem ser expressos com duas casas decimais. Utilize a formatação como sugerido acima.
No SuSy, como você já sabe, para cada tarefa, criamos um conjunto de testes com arquivos de entrada arq<i>.in
e para cada um deles temos uma saída esperada arq<i>.res
. Para esta tarefa, os testes abertos serão os listados na tabela abaixo. Haverá também um teste fechado.
Observe a tabela a abaixo e fique atento(a) aos arredondamentos:
Entrada | Saída | ||
---|---|---|---|
arq01.in | 100.00 |
Valor: R$ 100.00 |
arq01.res |
arq02.in | 99.99 |
Valor: R$ 99.99 |
arq02.res |
arq03.in | 999.90 |
Valor: R$ 999.90 |
arq03.res |
arq04.in | 0 |
Valor: R$ 0.00 |
arq04.res |
arq05.in | 10000.00 |
Valor: R$ 10000.00 |
arq05.res |
Leia instruções para fazer os testes em Testes com o SuSy.
Veja aqui a página de submissão da tarefa. O arquivo a ser submetido deve se chamar lab02.py. No link Arquivos auxiliares há um arquivo aux02.zip
que contém todos os arquivos de testes abertos e seus respectivos resultados compactados.
Utilize o sistema SuSy com o mesmo login e senha que você utiliza para fazer acesso ao sistema da DAC. Se você não estiver inscrito corretamente, envie email para .
O limite máximo será de 30 submissões. Serão considerados os resultados da última submissão.
O peso desta tarefa é 1.
O prazo final para submissão é 03/05/2020.