Aprenda a trabalhar com números em Python: Guia completo
Neste guia completo, você aprenderá a trabalhar com números em Python. Desde operações matemáticas básicas até conceitos avançados como números complexos e funções matemáticas, você ficará confortável trabalhando com números em seus programas Python em nenhum momento.
Tipos de números em Python
Existem 3 classes de tipos para números em Python
:
int
float
complex
Muitas características são compartilhadas entre elas, mas também existem suas diferenças, veremos detalhes de cada uma delas abaixo.
int
O tipo int
representa a classe dos números inteiros em Python
. Números inteiros são todos aqueles que não contém uma
parte decimal, ou seja, são uma unidade, por exemplo: 1
, 10
, -42
.
Podemos definir um número inteiro (int
) em Python simplesmente associando um número a uma variável.
numero = 10 # Váriavel numero recebe 10
float
O tipo float
representa a classe dos números reais em Python
. Números reais são todos aqueles que contém parte
decimal, por exemplo: 1
, 50,8
, -42,0
.
Em português costumamos utilizar ,
para separar a parte decimal da parte inteira, porém em Python o .
é utilizado
para esse propósito.
Podemos definir um número real (float
) semelhantemente ao que foi efetuado com o tipo int
.
numero = 5.0 # Váriavel numero recebe 5,0
Convertendo os tipos
As classes nativas para tipos em Python contém uma função que converte um valor(quando possível) para o seu determinado
tipo, ou seja, podemos utilizar int()
e float()
para fazer uma variável ser do tipo inteiro ou do tipo real.
numero = 1.0
print(numero)
# 1.0
print(int(numero))
# 1
numero = 1
print(numero)
# 1
print(float(numero))
# 1.0
No caso do tipo original da variável ser float
e utilizarmos a função int
acontecerá um truncamento, ou seja, a
parte decimal do número será ignorada, mesmo se esse número for 1,9999
, por exemplo.
numero = 1.9999
print(int(numero))
# 1
No decorrer do artigo você verá várias formas de fazer o arrendondamento desse número diferentes do truncamento.
Função type
Podemos utilizar a função type()
para saber qual a classe de número pertence uma variável.
numero = 5
print(type(numero))
# <class 'int'>
numero = 5.0
print(type(numero))
# <class 'float'>
Podemos verificar o tipo de uma variável utilizando a função isinstance()
, que recebe dois parâmetros:
- A variável ou o número que deseja verificar o tipo.
- A classe do tipo ou uma tupla de tipos.
Abaixo temos um exemplo fazendo a verificação para inteiros(int
) e para reais(float
).
numero = 5
print(isinstance(numero, int))
# True
print(isinstance(numero, float))
# False
numero = 5.0
print(isinstance(numero, int))
# False
print(isinstance(numero, float))
# True
Caso o objetivo seja simplesmente saber se a variável representa um número, sendo o tipo exato(real ou inteiro)
irrelevante para o contexto, basta passar como segundo argumento uma tupla de classes de tipos, no caso do
exemplo (int, float)
.
numero = 5
print(isinstance(numero, (int, float)))
# True
numero = 5.0
print(isinstance(numero, (int, float)))
# True
Verificando se um float é inteiro
Às vezes é necessário saber se um número armazenado como float
representa um inteiro, para isso obviamente poderíamos
utilizar os operadores e resolver esse problema de forma matemática, mas o tipo float
tem um operador interno que
efetua essa verificação.
O método is_integer()
da classe float
verifica se um número real é um inteiro.
numero = 2.0
print(numero.is_integer())
# True
numero = 2.5
print(numero.is_integer())
# False
Bases numéricas em Python
Os números que utilizamos no cotidiano costumam ser de base 10, com raríssimas exceções como, por exemplo, para o tempo que utilizam uma base de 60 para minutos e horas, e uma de 24 para dias.
Computadores(e seus sistemas) costumam utilizar outras bases, por exemplo, a base 2 (binária), 8(octal) e a base 16( hexadecimal).
Conseguimos representar todas essas classes em Python
com a utilização de um prefixo antes de digitar o número, os
prefixos são:
- Binário:
0b
ou0B
- Octal:
0o
ou0O
- Hexadecimal:
0x
ou0X
Declarando um número em qualquer base e utilizando a função print()
irá exibir o seu valor em decimal.
numero = 0b10011
print(numero)
# 9
numero = 0o23
print(numero)
# 9
numero = 0x13
print(numero)
# 9
Operações com números em Python
Operadores básicos
Todos as operações básicas que utilizamos na matemática estão presentes em Python. É possível realizarmos de forma simples as operações utilizando o seu respectivo operador:
- Adição:
+
- Subtração:
-
- Multiplicação:
*
- Divisão:
/
- Divisão inteira:
//
- Exponenciação:
**
- Módulo:
%
Abaixo temos um exemplo de cada uma das operações.
a = 10 b = 5
print(a + b)
# 15
print(a - b)
# 5
print(a * b)
# 50
print(a / b)
# 2.0
print(a // b)
# 2
print(a ** b)
# 100000
Expressões aritméticas
Também podemos escrever expressões utilizando vários operadores, no exemplo abaixo você verá uma expressão da fórmula da discriminante em Python.
a = 2
b = 3
c = 4
discriminante = (b ** 2) - (4 * a * c)
print(discriminante)
# -23
Arredondando números em Python
No início do artigo vimos que podemos truncar um número utilizando a função int()
, porém às vezes queremos métodos
mais sofisticados de arredondar um número. Temos algumas formas de fazer apenas com as funções já inclusas mas também o
módulo math
poderá ser útil em alguns casos.
Arredondando para o valor mais próximo
Uma forma simples e a mais útil de todas é arredondar um número para seu inteiro mais próximo, em Python utilizamos a
função round()
para isso.
numero = 2.8
print(round(numero))
# 3
Às vezes o objetivo é arredondar para um valor com uma precisão específica, e não para o inteiro mais próximo, por
exemplo, talvez o número tenha duas casas decimais e só nos interessa uma, poderíamos fazer isso também utilizando a
função round()
passando um segundo parâmetro que será a precisão desejada.
numero = 2.08
print(round(numero, 1))
# 2.1
Arredondando para um valor superior
Para arrendondar para o “teto” de um número utilizaremos a função ceil
, para isso será necessário o módulo math
.
import math
numero = 2.1
print(math.ceil(numero))
# 3
Arredondando para um valor inferior
Para arrendondar para o “chão” de um número utilizaremos a função floor
, para isso será necessário o módulo math
.
import math
numero = 2.8
print(math.floor(numero))
# 2
Valor absoluto (módulo)
Às vezes é necessário o valor absoluto de uma número, para isso podemos utilizar a função abs
, que retorna o módulo de
um número.
numero = -5
print(abs(numero))
# 5
Módulo math no Python
Na seção anterior foi apresentado as funções floor
e ceil
do módulo math
, porém além dessas temos outras diversas
funções, abaixo será mostrada algumas outras funcionalidades interessantes possíveis com esse módulo.
Outros operadores básicos
Já foi apresentado anteriormente os operadores básicos do Python, porém às vezes é necessário alguns outros operadores,
e provavelmente você irá encontrar o que precisa no módulo math
.
Esses operadores até são possível de serem replicados com os operadores padrões, mas para manter a legibilidade do
código às vezes é melhor utilizar o método math
, até porque gastar tempo reinventado a roda não costuma ser algo muito
inteligente.
factorial(x)
Normalmente representamos o fatorial de um número na matemática utilizando !
, poderíamos representar um fatorial em
uma notação matemática da seguinte forma: !5 = 5*4*3*2*1 = 120
, em Python
ao utilizar a função factorial
, ficaria
da seguinte forma:
import math
numero = 5
print(math.factorial(numero))
#120
sqrt(x)
A função sqrt
retorna a raiz quadrada de x
.
import math
numero = 81
print(math.sqrt(numero))
# 9.0
Outra forma de fazer isso sem o módulo math
seria com o operador de potência, elevando um número à 1/2
.
numero = 81
print(numero ** (1 / 2))
# 9.0
Logaritimos
O módulo math
contém várias funções para lidar com logaritmos, abaixo estão essas opções.
log(x[, b])
A função log()
retorna o logaritimo de x
na base b
. Caso não b
não seja especificado será utilizado e
.
import math
numero = 5
base = 2
print(math.log(numero, 2))
# 2.321928094887362
print(math.log(numero))
# 1.6094379124341003
log2(x)
Semelhante à função anterior, porém a função log2()
utiliza a base 2.
import math
numero = 5
print(math.log2(numero))
# 2.321928094887362
log10(x)
A função log10()
é idêntica a função anterior, porém com a base 10.
import math
numero = 5
print(math.log10(numero))
# 0.6989700043360189
Constantes
As vezes é interessante não precisar definir uma constante matemática, o módulo math
traz consigo às duas constantes
fundamentais.
pi
Retorna o pi
, uma constante matemática que representa a razão entre a circunferência e o diâmetro de um círculo.
import math
print(math.pi)
# 3.141592653589793
e
Retorna a constante e
.
import math
print(math.e)
# 2.718281828459045
Convertendo ângulos
degrees(x)
Converte o angulo x
de radianos para graus.
import math
angulo = 1.57
print(math.degrees(angulo))
# 89.95437383553924
radians(x)
Converte o angulo x
de graus para radianos.
import math
angulo = 90
print(math.radians(angulo))
# 1.5707963267948966
Funções trigonométricas
O modulo math
traz consigo as funções trigonométricas, apresentarei as mais comuns e deixarei listadas as demais, a
utilização é semelhante em todos os casos.
cos(x)
Retorna o cosseno do angulo x
representado em radianos.
import math
angulo = 1.57
print(math.cos(angulo))
# 0.0007963267107332633
sin(x)
Retorna o seno do angulo x
representado em radianos.
import math
angulo = 1.57
print(math.sin(angulo))
# 0.9999996829318346
tan(x)
Retorna a tangente do angulo x
representado em radianos.
import math
angulo = 1.57
print(math.tan(angulo))
# 1255.7655915007897
Outras funções trigonométricas
Além das 3 básicas temos outras funções trigonométricas e variações destas implementadas no módulo, a utilização é semelhante ao apresentado nas seções anteriores.
acos(x)
: retorna o arco cosseno dex
.asin(x)
: retorna o arco seno dex
.atan(x)
: retorna o arco tangente dex
.atan2(y, x)
: retorna o arco tangente de(y / x)
.cosh(x)
: retorna o cosseno hiperbólico dex
.sinh(x)
: retorna o seno hiperbólico dex
.tanh(x)
: retorna a tangente hiperbólica dex
.acosh(x)
: retorna o inverso do cosseno hiperbólico dex
.asinh(x)
: retorna o inverso do seno hiperbólico dex
.atanh(x)
: retorna o inverso da tangente hiperbólica dex
.
Números complexos em Python
O tipo complex
representa a classe dos números imaginários em Python
. Diferente dos tipos inteiro e real, esse
talvez você não conhece, mas se você já viu alguma matéria de cálculo ou de álgebra de nível superior deveria saber que
um número complexo é um número representado por uma parte real e outra parte imaginária, por exemplo: 1 + 2j
, 87 + 9,3j
, (1/8) + (1/2)j
.
Python
é uma das poucas linguagens de programação com suporte nativo a números complexos, mas provavelmente você não
irá utilizá-lo fora do contexto científico ou de computação gráfica.
Um número complexo em Python
é definido da seguinte forma.
numero = 1 + 2j # Váriavel numero recebe (1+2j)
Podemos utilizar semelhantemente ao feito com os outros tipos de números as operações possíveis de serem feitas com complexos.
a = 1 + 2j # Váriavel numero recebe (1+2j)
b = 8
print(a + b)
# (9+2j)
print(a - b)
# (-7+2j)
print(a * b)
# (8+16j)
print(a / b)
# (0.125+0.25j)
print(a ** b)
# (-527+336j)