English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial básico do Python

Controle de fluxo do Python

Função do Python

Tipos de Dados do Python

Operações de arquivo do Python

Objetos e classes do Python

Data e hora do Python

Conhecimentos avançados do Python

Manual de referência do Python

Números Python, conversão de tipos e operações matemáticas

Neste artigo, você aprenderá sobre os diferentes números usados no Python, como converter um tipo de dados para outro e as operações matemáticas suportadas pelo Python.

Tipo de dados numéricos em Python

O Python suporta inteiros, números de ponto flutuante e números complexos. Eles são definidos como int, float e complex no tipo de dados Python.

os inteiros e os números de ponto flutuante são separados por um ponto decimal.5é um inteiro, enquanto5.0 é um número de ponto flutuante.

os números complexos são escritos na forma x + yj, ondexé a parte real,yé a parte imaginária.

Podemos usar a função type() para determinar o tipo de dado de uma variável ou valor e usar a função isinstance() para verificar se pertence a um tipo específico.

a = 5
# Saída: <class 'int'>
print(type(a))
# Saída: <class 'float'>
print(type(5.0))
# Saída: (8+3j)
c = 5 + 3j
print(c + 3)
# Saída: True
print(isinstance(c, complex))

Embora os inteiros possam ter comprimento arbitrário, os números de ponto flutuante podem ser precisos apenas até15máximos pontos decimais (o16dígitos decimais (base

os dígitos não são precisos).10) sistemas de numeração. Nós lidamos com números decimais (base2) sistemas de numeração. Mas os programadores de computadores (normalmente programadores embarcados) precisam usar binário (base16) e hexadecimal (base8) e octal (base

) do sistema de numeração.

Os pré-fixos do sistema de numeração de números Python podem ser representados adicionando prefixos antes dos números. A tabela a seguir lista esses pré-fixos.
sistema de numeraçãopré-fixo
Binário'0b' ou '0B'
Octal'0o' ou '0O'
Hexadecimal'0x' ou '0X'

Aqui estão alguns exemplos

# Saída: 107
print(0b1101011)
# Saída: 253 (251 + 2)
print(0xFB + 0b10)
# Saída: 13
print(0o15)

Quando executamos o programa, a saída é:

107
253
13

conversão de tipos de dados

Podemos converter um número em outro número. Isso também é chamado de conversão forçada.

se um dos operandos for um número de ponto flutuante, operações como adição, subtração etc. forçarão a conversão implícita (automática) de inteiros para números de ponto flutuante.

>>> 1 + 2.0
3.0

Podemos ver acima1inteiros) são forçados a converter-se10 (float) para operações de adição, o resultado também é um número de ponto flutuante.

Também podemos usar funções integradas como int(), float() e complex() para converter explicitamente entre tipos. Essas funções podem até realizar operações de adição, resultando em um número de ponto flutuante.0 (float).stringconversão.

>>> int(2.3)
2
>>> int(-2.8)
-2
>>> float(5)
5.0
>>> complex('3+5j')
(3+5j)

ao converter de float para inteiro, o número será truncado (o inteiro mais próximo de zero).

Python decimal

A classe interna float do Python executa alguns cálculos que podem nos surpreender. Todos sabemos1.1e2.2a soma é3.3Mas o Python parece não concordar.

>>> (1.1 + 2.2) == 3.3
False

O que está acontecendo?

A verdade é que os números flutuantes são implementados como frações binárias na hardware do computador, pois os computadores compreendem apenas binário (0 e1)。Por essa razão, a maioria dos números decimais que conhecemos não pode ser armazenados exatamente em nossos computadores.

Vamos dar um exemplo. Não podemos representar a fração1/3representado como número decimal. Isso dará 0.33333333 ...infinito, e podemos apenas fazer uma aproximação.

O número decimal original 0.1Isso levaria a uma fração binária 0.000 de comprimento infinito.110011001100110011 ...e nossos computadores armazenam apenas um número limitado de números binários.

Isso só se aproxima de 0.1mas nunca serão iguais. Portanto, isso é uma limitação da hardware do computador, não um erro no Python.

>>> 1.1 + 2.2
3.3000000000000003

Para superar esse problema, podemos usar o módulo decimal que acompanha o Python. A precisão dos números flutuantes pode alcançar15casas decimais, enquanto o módulo decimal tem precisão configurável pelo usuário.

import decimal
# Saída: 0.1
print(0.1)
# Saída: Decimal('0.1000000000000000055511151231257827021181583404541015625')
print(decimal.Decimal(0.1))

Quando queremos realizar cálculos decimais como na escola, usaremos este módulo.

Eles também mantêm significado. Sabemos que25.50 quilogramas são25.5Os quilogramas são mais precisos, pois têm duas casas decimais em vez de uma.

from decimal import Decimal as D
# Saída: Decimal('3.3')
print(D('1.1') + D('2.2))
# Saída: Decimal('3.000')
print(D('1.2') * D('2.50'))

Atenção aos zeros ao final do exemplo.

Podemos perguntar, por que não usar Decimal em vez de float a cada vez? A principal razão é a eficiência. A operação de ponto flutuante deve ser mais rápida que a operação decimal.

Quando usar Decimal em vez de float?

Nas seguintes situações, geralmente usamos decimal.

  • Quando realizamos aplicações financeiras que requerem representação decimal exata.

  • Quando precisamos especificar o nível de precisão desejado.

  • Quando queremos implementar o conceito de precisão de casas decimais.

  • Quando queremos operar como na escola

Frações Python

O Python oferece operações envolvendo números decimais através do módulo fractions.

Os números decimais têm numerador e denominador, ambos inteiros. O módulo suporta algoritmos de números racionais.

Podemos criar objetos Fraction de várias maneiras.

import fractions
# Saída: 3/2
print(fractions.Fraction(1.5))
# Saída: 5
print(fractions.Fraction(5))
# Saída: 1/3
print(fractions.Fraction(1,3))

Ao criar frações a partir de float, podemos obter alguns resultados excepcionais. Isso é devido à representação imperfeita do número flutuante binário discutida na seção anterior.

Felizmente, os números decimais nos permitem usar exemplos de strings. Esta é a opção preferida ao usar números decimais.

import fractions
# Usado como float
# Saída: 2476979795053773/2251799813685248
print(fractions.Fraction(1.1))
# Usado como string
# Saída: 11/10
print(fractions.Fraction('1.1))

Este tipo de dados suporta todas as operações básicas. Aqui estão alguns exemplos.

from fractions import Fraction as F
# Saída: 2/3
print(F(1,3) + F(1,3))
# Saída: 6/5
print(1 / F(5,6))
# Saída: False
print(F(-3,10) > 0)
# Saída: True
print(F(-3,10) < 0)

Matemática do Python

O Python fornece módulos semelhantes, math e random, que podem executar diferentes operações matemáticas, como funções trigonométricas, logarítmos, probabilidade e estatísticas, etc.

import math
# Saída: 3.141592653589793
print(math.pi)
# Saída: -1.0
print(math.cos(math.pi))
# Saída: 22026.465794806718
print(math.exp(10))
# Saída: 3.0
print(math.log10(1000))
# Saída: 1.1752011936438014
print(math.sinh(1))
# Saída: 720
print(math.factorial(6))

Este éNo módulo math do PythonLista completa de funções e propriedades disponíveis.

import random
# Saída: 16
print(random.randrange(10,20))
x = ['a', 'b', 'c', 'd', 'e']
# Obter opção aleatória
print(random.choice(x))
# Desordena a ordem da lista x
random.shuffle(x)
# Imprimir saída com a ordem x desordenada
print(x)
# Imprimir elemento aleatório
print(random.random())

Resultados de saída (resultados aleatórios):

19
c
['e', 'a', 'd', 'c', 'b']
0.707947055817621

Este éNo módulo random do PythonLista completa de funções e propriedades disponíveis.