Nú

Números em Python

78 exercícios

Sobre Números

O Python tem três tipos diferentes de números incorporados: inteiros (int), números de vírgula flutuante (float) e complexos (complex). As frações (fractions.Fraction) e os decimais (decimal.Decimal) também estão disponíveis através de importação da biblioteca padrão.

Os números inteiros, incluindo os números hexadecimais (hex()), octais (oct()) e binários (bin()) sem casas decimais, também são identificados como ints:

# Ints are whole numbers.
>>> 1234
1234
>>> type(1234)
<class 'int'>

>>> -12
-12

Os números que contêm um ponto decimal (com ou sem parte fracionária) são identificados como floats:

>>> 3.45
3.45
>>> type(3.45)
<class 'float'>

Aritmética

O Python suporta totalmente a aritmética entre estes diferentes tipos de números e converte os números de menor amplitude para corresponderem aos de maior amplitude quando são usados com os operadores aritméticos binários (+, -, *, /, // e %).

Todos os números (exceto os complexos) suportam todas as operações aritméticas, avaliadas de acordo com a precedência de operadores. O suporte para funções matemáticas (para além de + e -) para números complexos encontra-se no módulo cmath.

Adição e subtração

Os operadores de adição e subtração comportam-se como na matemática normal. Se um ou mais dos operandos for um float, os restantes ints também serão convertidos em floats:

>>> 5 - 3
2
# The int is widened to a float here, and a float is returned.
>>> 3 + 4.0
7.0

Multiplicação

Tal como na adição e na subtração, a multiplicação converte os números de menor amplitude para corresponderem aos de maior amplitude:

>>> 3 * 2
6

>>> 3 * 2.0
6.0

Divisão

A divisão devolve sempre um float, mesmo que o resultado seja um número inteiro:

>>> 6/5
1.2

>>> 6/2
3.0

Divisão inteira

Se precisares de um resultado int, podes usar a divisão inteira para truncar o resultado. A divisão inteira é efetuada com o operador //:

>>> 6//5
1

>>> 6//2
3

Módulo

O operador de módulo (%) devolve o resto da divisão dos dois operandos:

# The result of % is zero here, because dividing 8 by 2 leaves no remainder
>>> 8 % 2
0

# The result of % is 2 here, because 3 only goes into 5 once, with 2 left over
>>> 5 % 3
2

Outra forma de ver 5 % 3:

>>> whole_part = int(5/3)
1

>>> decimal_part = 5/3 - whole_part
0.6666666666666667

>>> whole_remainder = decimal_part * 3
2.0

Exponenciação

A exponenciação é efetuada com o operador **:

>>> 2 ** 3
8

>>> 4 ** 0.5
2

Conversões

Os números podem ser convertidos de int para floats e de floats para int com as funções incorporadas int() e float():

>>> int(3.45)
3

>>> float(3)
3.0

Arredondamento

O Python disponibiliza uma função incorporada round(<number>, <decimal_places>) para arredondar um número de vírgula flutuante a um determinado número de casas decimais. Se não for especificado nenhum número de casas decimais, o número é arredondado ao inteiro mais próximo e devolve um int:

>>> round(3.1415926535, 2)
3.14

>>> round(3.1415926535)
3

Prioridade e parênteses

O Python permite-te usar parênteses para agrupar expressões. Isto é útil quando queres alterar a ordem de operações predefinida.

>>> 2 + 3 * 4
14

>>> (2 + 3) * 4
20

O Python segue a regra PEMDAS para a precedência de operadores. Isto significa que os cálculos dentro de () têm a prioridade mais alta, seguidos de ** e, depois, de *, /, //, %, + e -:

>>> 2 + 3 - 4 * 4
-11

>>> (2 + 3 - 4) * 4
4

# In the following example, the `**` operator has the highest priority, then `*`, then `+`
# Meaning we first do 4 ** 4, then 3 * 256, then 2 + 768
>>> 2 + 3 * 4 ** 4
770

Precisão e representação

Os inteiros em Python têm precisão arbitrária: o número de algarismos é limitado apenas pela memória disponível do sistema anfitrião.

Os números de vírgula flutuante são habitualmente implementados com um double em C (15 casas decimais de precisão), mas a representação varia consoante o sistema anfitrião. Os números complexos têm uma parte real e uma parte imaginary, ambas representadas por números de vírgula flutuante.

Para uma discussão mais detalhada das questões e limitações da aritmética de vírgula flutuante entre linguagens de programação, dá uma vista de olhos em 0.30000000000000004.com e em The Python Tutorial.

Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Números

A prática está bloqueada

Desbloqueia mais 3 exercícios para praticares Números