Introdução
Esta seção discute cálculos matemáticos.
This tutorial is from open-source community. Access the source code
Esta seção discute cálculos matemáticos.
Python possui 4 tipos de números:
Booleanos possuem dois valores: True, False.
a = True
b = False
Numericamente, eles são avaliados como inteiros com valor 1, 0.
c = 4 + True ## 5
d = False
if d == 0:
print('d is False')
Mas, não escreva código assim. Seria estranho.
Valores com sinal de tamanho e base arbitrários:
a = 37
b = -299392993727716627377128481812241231
c = 0x7fa8 ## Hexadecimal
d = 0o253 ## Octal
e = 0b10001111 ## Binary
Operações comuns:
x + y Adição (Add)
x - y Subtração (Subtract)
x * y Multiplicação (Multiply)
x / y Divisão (Divide) (produz um float)
x // y Divisão inteira (Floor Divide) (produz um inteiro)
x % y Módulo (resto) (Modulo)
x ** y Potência (Power)
x << n Deslocamento de bits para a esquerda (Bit shift left)
x >> n Deslocamento de bits para a direita (Bit shift right)
x & y E bit a bit (Bit-wise AND)
x | y OU bit a bit (Bit-wise OR)
x ^ y XOR bit a bit (Bit-wise XOR)
~x NOT bit a bit (Bit-wise NOT)
abs(x) Valor absoluto (Absolute value)
Use notação decimal ou exponencial para especificar um valor de ponto flutuante:
a = 37.45
b = 4e5 ## 4 x 10**5 or 400,000
c = -1.345e-10
Floats são representados como precisão dupla usando a representação nativa da CPU IEEE 754. Esta é a mesma que o tipo double na linguagem de programação C.
17 dígitos de precisão
Expoente de -308 a 308
Esteja ciente de que números de ponto flutuante são inexatos ao representar decimais.
>>> a = 2.1 + 4.2
>>> a == 6.3
False
>>> a
6.300000000000001
>>>
Este não é um problema do Python, mas sim do hardware de ponto flutuante subjacente na CPU.
Operações comuns:
x + y Adição (Add)
x - y Subtração (Subtract)
x * y Multiplicação (Multiply)
x / y Divisão (Divide)
x // y Divisão inteira (Floor Divide)
x % y Módulo (Modulo)
x ** y Potência (Power)
abs(x) Valor absoluto (Absolute Value)
Estes são os mesmos operadores que os Inteiros, exceto pelos operadores bit a bit. Funções matemáticas adicionais são encontradas no módulo math.
import math
a = math.sqrt(x)
b = math.sin(x)
c = math.cos(x)
d = math.tan(x)
e = math.log(x)
Os seguintes operadores de comparação/relacionais funcionam com números:
x < y Menor que (Less than)
x <= y Menor ou igual a (Less than or equal)
x > y Maior que (Greater than)
x >= y Maior ou igual a (Greater than or equal)
x == y Igual a (Equal to)
x != y Diferente de (Not equal to)
Você pode formar expressões booleanas mais complexas usando
and, or, not
Aqui estão alguns exemplos:
if b >= a and b <= c:
print('b is between a and c')
if not (b < a or b > c):
print('b is still between a and c')
O nome do tipo pode ser usado para converter valores:
a = int(x) ## Converte x para inteiro
b = float(x) ## Converte x para float
Experimente.
>>> a = 3.14159
>>> int(a)
3
>>> b = '3.14159' ## Também funciona com strings contendo números
>>> float(b)
3.14159
>>>
Lembrete: Estes exercícios assumem que você está trabalhando no diretório ~/project. Procure o arquivo mortgage.py.
Dave decidiu contratar uma hipoteca de taxa fixa de 30 anos de $500.000 com a Guido's Mortgage, Stock Investment, and Bitcoin trading corporation. A taxa de juros é de 5% e o pagamento mensal é de $2684.11.
Aqui está um programa que calcula o valor total que Dave terá que pagar durante a vida da hipoteca:
## mortgage.py
principal = 500000.0
rate = 0.05
payment = 2684.11
total_paid = 0.0
while principal > 0:
principal = principal * (1+rate/12) - payment
total_paid = total_paid + payment
print('Total paid', total_paid)
Insira este programa e execute-o. Você deve obter a resposta 966279.5999999957.
Suponha que Dave pague um extra de $1000/mês durante os primeiros 12 meses da hipoteca?
Modifique o programa para incorporar este pagamento extra e faça com que ele imprima o valor total pago juntamente com o número de meses necessários.
Quando você executar o novo programa, ele deverá relatar um pagamento total de 929965.6199999959 em 342 meses.
Modifique o programa para que as informações de pagamento extra possam ser tratadas de forma mais geral. Faça com que o usuário possa definir estas variáveis:
extra_payment_start_month = 61
extra_payment_end_month = 108
extra_payment = 1000
Faça com que o programa observe essas variáveis e calcule o total pago de forma apropriada.
Quanto Dave pagará se ele pagar um extra de $1000/mês por 4 anos, começando após os primeiros cinco anos já terem sido pagos?
Modifique o programa para imprimir uma tabela mostrando o mês, o total pago até agora e o principal restante. A saída deve ser semelhante a esta:
1 2684.11 499399.22
2 5368.22 498795.94
3 8052.33 498190.15
4 10736.44 497581.83
5 13420.55 496970.98
...
308 874705.88 3478.83
309 877389.99 809.21
310 880074.10 -1871.53
Total pago 880074.10
Meses 310
Já que está nisso, corrija o programa para corrigir o pagamento a mais que ocorre no último mês.
int() e float() podem ser usados para converter números. Por exemplo:
>>> int("123")
123
>>> float("1.23")
1.23
>>>
Com isso em mente, você consegue explicar este comportamento?
>>> bool("False")
True
>>>
Parabéns! Você completou o laboratório de Números. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.