Python Iluminado

Números

img

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'>

Int

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'>

Float

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

Complex

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

Operações

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)

Extensão

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:

img

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

Ângulo

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 [-π, π]

Constante π and e

A biblioteca cmath também nos traz constantes matemáticas como e e pi:

print(cmath.pi) # 3.141592653589793
print(cmath.e) # 2.718281828459045

Números Aleatórios

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.

Conversão de Números

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.

Bases

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:

PrefixoInterpretaçãoBase
0b ou 0BBinário2
0o ou 0OOctal8
0x or 0XHexadecimal16

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!