Em Python existem três tipos numéricos, são eles:
- int
- float
- complex
É importante lembrarmos que tudo em Python é um objeto, sendo assim, tipos de dados são classes e variáveis são instâncias (objetos) dessas classes, não se preocupe que veremos esses aspectos com mais detalhe ao longo do guia.
Variáveis do tipo numérico são criadas quando atribuimos valores a elas:
a = 27 # int
b = 22.2 # float
c = 3j # complex
Para verificarmos qual classe a variável pertence, podemos utilizar a função type():
print(type(a)) # <class 'int'>
print(type(b)) # <class 'float'>
print(type(c)) # <class 'complex'>
Inteiros são números positivos, negativos, que não apresentam casas decimais, seu tamanho é limitado apenas pela capacidade de memória disponível:
a = 3
b = 342907249723902
c = -100
print(type(a)) # <class 'int'>
print(type(b)) # <class 'int'>
print(type(c)) # <class 'int'>
Floats ou "números de ponto flutuante" são números positivos ou negativos que podem conter uma ou mais casas decimais:
a = 23.3
b = 2.0
c = -17.78
print(type(a)) # <class 'float'>
print(type(b)) # <class 'float'>
print(type(c)) # <class 'float'>
Podemos acrescentar o caracter e ou E seguido por um número inteiro positivo ou negativo para especificar a notação científica.
e = 35e4
print(type(e)) # <class 'float'>
print(e) # 350000.0
E = 3.8e-2
print(type(E)) # <class 'float'>
print(E) # 0.038
O valor máximo que um float pode ter é aproximadamente 1.8×10^308
. Qualquer número maior que este é indicado pelo valor inf (infinity).
print(1.79e308) # 1.79e+308
print(1.8e308) # inf
Entretanto, o valor mínimo que um float pode ter é aproximadamente 5.0×10^-324
. Qualquer número menor que este é considerado 0 (zero).
print(5e-324) # 5e-324
print(5e-325) # 0.0
Números complexos são escritos com j
representando a parte imaginária. Eles podem ser escritos complex(3,4)
ou 3 + 4j
. Um número complexo Python c
é armazenado internamente usando coordenadas Cartesianas ou Retangulares.
Vejamos alguns exemplos:
a = 2+4j
b = -3j
c = complex(3,4)
print(type(a)) # <class 'complex'>
print(type(b)) # <class 'complex'>
print(type(c)) # <class 'complex'>
Obtendo as partes Real e Imaginária de um número complexo:
print(c.real) # 3.0
print(c.imag) # 4.0
Realizando a operação de adição com números complexos:
x = complex(4,3)
y = complex(-1,4)
z = complex(2,1)
print(x + y) # (3+7j)
Acrescentando um escalar adicionará à parte real:
print(x + 1) # (5+3j)
Também podemos realizar a operação de multiplicação com números complexos:
print(x * y) # (-16+13j)
Multiplicação por um Escalar:
print(x * 2) # (8+6j)
A função abs(z)
retorna a extensão do número complexo z
, em outras palavras, representa o cálculo da seguinte fórmula:
print(abs(z)) # 2.23606797749979
Também podemos realizar este cálculo com o auxílio da função sqrt() da biblioteca math.
from math import sqrt
sqrt(z.real**2 + z.imag**2) # 2.23606797749979
A função phase()
retorna o ângulo x
em radianos, porém, para usá-la teremos que importar a biblioteca cmath em nosso código.
Esta biblioteca nos traz funções matemáticas específicas para números complexos.
import cmath
print(cmath.phase(x)) # 0.6435011087932844
print(phase(complex(-1.0, 0.0))) # 3.1415926535897931
print(phase(complex(-1.0, -0.0))) # -3.1415926535897931
O resultado estará entre [-π, π]
A biblioteca cmath também nos traz constantes matemáticas como e e pi:
print(cmath.pi) # 3.141592653589793
print(cmath.e) # 2.718281828459045
Embora Python não tenha uma função random() para nos gerar um número aleatório, existe um módulo construído em Python chamado random
que nos permite criar números aleatórios:
import random
print(random.randrange(1,10))
A função acima gera números entre 1 e 9.
Caso queira saber mais detalhes sobre o módulo random
você pode visitar sua Referência.
A linguagem Python nos permite converter entre tipos numéricos.
k = 3
i = 7.7
z = 4j
print(type(k)) # <class 'int'>
print(type(i)) # <class 'float'>
print(type(z)) # <class 'complex'>
Convertendo de int para float:
print(float(k)) # 3.0
Convertendo de float para int:
print(int(i)) # 7
Convertendo de int para complex:
print(complex(k)) # (3+0j)
Importante lembrar que não podemos converter um número complexo para outro tipo numérico.
Normalmente escrevemos inteiros na base 10. No entanto, Python nos permite escrever inteiros nos formatos Hexadecimal (base 16), Octal (base 8) e Binário (base 2).
Podemos fazer isso adicionando um dos seguintes prefixos ao número inteiro:
Prefixo | Interpretação | Base |
---|---|---|
0b ou 0B |
Binário | 2 |
0o ou 0O |
Octal | 8 |
0x or 0X |
Hexadecimal | 16 |
Para esclarecer o funcionamento, vejamos alguns exemplos:
print(0b01111111) # 127
print(0o10) # 8
print(0XFF) # 255
O método bin() converte e retorna a string binária equivalente de um determinado inteiro.
bin(255) # '0b11111111'
Se quisermos convertê-lo de volta para o valor inteiro, podemos usar a função int(), passando a base 2 como argumento:
int('0b11111111',2) # 255
O método oct() converte e retorna a string octal equivalente de um determinado inteiro.
oct(8) # '0o10'
Se quisermos convertê-lo de volta para o valor inteiro, podemos usar a função int(), passando a base 8 como argumento:
int('0o10',8) # 8
O método hex() converte e retorna a string hexadecimal equivalente de um determinado inteiro.
hex(255) # '0xff'
Se quisermos convertê-lo de volta para o valor inteiro, podemos usar a função int(), passando a base 16 como argumento:
int('0xff',16) # 255
Lembre sempre que números são elementos essenciais e fundamentais na programação e que vamos utilizar muito eles!