Covil Do Dev

Números em Python

Neste artigo você aprenderá sobre os tipos de dados para números em Python, como utilizar, converter entre tipos diferentes e realizar operações matemáticas.


Lindomar Rodrigues
Lindomar Rodrigues

Atualizado

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 ou 0B
  • Octal: 0o ou 0O
  • Hexadecimal: 0x ou 0X

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 de x.
  • asin(x): retorna o arco seno de x.
  • atan(x): retorna o arco tangente de x.
  • atan2(y, x): retorna o arco tangente de (y / x).
  • cosh(x): retorna o cosseno hiperbólico de x.
  • sinh(x): retorna o seno hiperbólico de x.
  • tanh(x): retorna a tangente hiperbólica de x.
  • acosh(x): retorna o inverso do cosseno hiperbólico de x.
  • asinh(x): retorna o inverso do seno hiperbólico de x.
  • atanh(x): retorna o inverso da tangente hiperbólica de x.

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)

Obrigado por visitar o blog e por ler esse artigo, se tive qualquer dúvida, ideia ou sugestão, não hesite em entrar em contato pelo meu e-mail: lindomar@covildodev.com.br