Todos sabem que é melhor pagar as faturas em dia. No entanto, vários fatores, incluindo a inexperiência com este tipo de responsabilidade, podem levar ao atraso e aos terríveis encargos.
Nesta tarefa, ao calcular multas e juros, você irá
utilizar o tipo float
para representar valores
monetários, 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.1
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á apresentar na sequência os seguintes valores em reais:
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
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.
Entrada | Saída | ||
---|---|---|---|
arq1.in | 99.99 |
Valor: R$ 99.99 |
arq1.res |
arq2.in | 99.99 |
Valor: R$ 99.99 |
arq2.res |
arq3.in | 100 |
Valor: R$ 100.00 |
arq3.res |
arq4.in | 0 |
Valor: R$ 0.00 |
arq4.res |
arq5.in | 100345.55 |
Valor: R$ 100345.55 |
arq5.res |
Releia, se necessário as 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, seus respectivos
resultados compactados e scripts para facilitar os testes.
Utilize o sistema SuSy com o mesmo login e senha que você utiliza para fazer acesso ao sistema da DAC (entregues no dia da sua matrícula). Se você não estiver inscrito corretamente, envie email para .
O limite máximo será de 15 submissões. Serão considerados os resultados da última submissão.
O peso desta tarefa é 1.
O prazo final para submissão é 07/04/2019.