CodeGym /Curso Java /Python SELF PT /Trabalhando com tipos numéricos

Trabalhando com tipos numéricos

Python SELF PT
Nível 5 , Lição 3
Disponível

3.1 Tipos numéricos: int, float, complex

Python tem vários tipos numéricos, cada um adequado para diferentes tarefas e manipulação de dados. Já mencionamos os tipos de dados int, float, complex, assim como os booleanos bool, que são uma subclasse dos inteiros. Agora vamos examinar cada um desses tipos em mais detalhes.

int (Números inteiros):

Este é possivelmente o tipo numérico mais usado em Python. Números inteiros podem ser positivos ou negativos e não têm casas decimais. Python suporta precisão arbitrária, o que significa que praticamente não há limite para o tamanho dos números que você pode manipular, exceto limitações de memória da sua máquina.

float (Números de ponto flutuante):

Esses números são usados para representar números reais e podem conter pontos decimais. Python implementa números de ponto flutuante de acordo com o padrão IEEE 754 double-precision, o que dá uma precisão de cerca de 15 dígitos decimais após o ponto.

complex (Números complexos):

Números complexos têm uma parte real e uma imaginária. Ambas são representadas por números de ponto flutuante. Em Python, a parte imaginária é indicada pelo sufixo j ou J. Por exemplo, um número complexo pode ser criado assim:

complex_number = 3 + 5j

bool (Valores booleanos):

Em Python, True e False são versões especializadas de números inteiros e funcionam como 1 e 0 respectivamente. Isso permite usá-los em operações aritméticas e outras expressões matemáticas.

Operações aritméticas:

Python suporta todas as operações aritméticas básicas, incluindo adição, subtração, multiplicação, divisão, divisão inteira, resto da divisão e exponenciação. Por exemplo:

  • Adição: 3 + 2
  • Subtração: 5 - 2
  • Multiplicação: 2 * 3
  • Divisão: 7 / 2
  • Divisão inteira: 7 // 2
  • Resto da divisão: 7 % 2
  • Exponenciação: 2 ** 3

Conversão de tipos:

Já falamos sobre a conversão (ou coerção) de tipos. Números podem ser convertidos uns nos outros usando funções de coerção, como int(), float() e complex().

Algumas questões de conversão de tipos numéricos já discutimos anteriormente, outras discutiremos mais detalhadamente em aulas futuras.

3.2 Números pseudoaleatórios

Às vezes, um programador se depara com tarefas aparentemente simples: "escolher um filme aleatório para assistir à noite de uma lista específica", "selecionar um vencedor da loteria", "embaralhar uma lista de músicas ao agitar o smartphone", "escolher um número aleatório para criptografar uma mensagem". E toda vez surge uma dúvida muito razoável: como obter esse número aleatório?

Conseguir um número "verdadeiramente" aleatório é bastante difícil. A ponto de que incluem coprocessadores matemáticos especiais em computadores para gerar tais números, atendendo a todos os requisitos de "aleatoriedade verdadeira".

Portanto, os programadores inventaram sua solução - números pseudoaleatórios. Números pseudoaleatórios são uma sequência que, à primeira vista, parece ser aleatória, mas um especialista, após uma análise detalhada, poderá encontrar alguns padrões. Esses números não são adequados para criptografar documentos secretos, mas servem bem para simular o lançamento de dados em um jogo.

Existem muitos algoritmos para gerar uma sequência de números pseudoaleatórios e quase todos geram o próximo número aleatório com base no anterior e em alguns números auxiliares.

Por exemplo, este programa exibirá na tela 1000 números não repetidos:


a = 41
c = 11119
m = 11113
seed = 1
                   

def get_next_random():
    global seed
    seed = (a * seed + c) % m
    return seed
                   
for t in range(1000):
    x = get_next_random()
    print(x)              

Aliás, não falamos de números pseudoaleatórios, mas sim de uma sequência desses números. Porque olhando para um único número não há como saber se ele é aleatório ou não.

O número aleatório pode ser obtido de diferentes maneiras:

def get_random_number():
    return 4  # este é definitivamente um número aleatório (z lançou-o com dados), veja "Piada sobre dados"               

3.3 Biblioteca random

Em Python, há a biblioteca random embutida, com a qual você vai achar interessante trabalhar. Como você já deve ter adivinhado pelo nome, com esta biblioteca é possível gerar números [pseudo]aleatórios.

A biblioteca random, embora embutida, ainda é uma biblioteca à parte, então antes de usá-la, é necessário importá-la para o nosso código. Isso é feito com a palavra-chave import. Exemplo:


import random 

A biblioteca random tem muitos métodos interessantes, mas hoje vamos conhecer apenas dois deles: método random() e método randint(). Eles realizam tarefas parecidas, mas diferentes:

Método random.random():

Este método retorna um número aleatório de ponto flutuante entre 0.0 e 1.0. Os números são gerados uniformemente dentro desse intervalo. Isso significa que cada número dentro do intervalo tem a mesma probabilidade de ser escolhido.


import random 

probability = random.random()
print("Probabilidade aleatória:", probability)               

Método random.randint(a, b):

Esta função retorna um número inteiro aleatório no intervalo de a a b inclusive. Ao contrário de random.random(), que devolve um número de ponto flutuante no intervalo de 0 a 1, randint() é usado quando é necessário escolher um número inteiro. Por exemplo, random.randint(1, 10) pode retornar qualquer número inteiro de 1 a 10, incluindo ambos os valores extremos.


import random

dice_roll = random.randint(1, 6)  # Simulação do lançamento de um dado
print("Número sorteado:", dice_roll)               

Estes são métodos muito úteis e interessantes, então usem à vontade.

3.4 Biblioteca math

Já que estamos nesse ritmo, vamos conhecer outra biblioteca interessante. Esta é a biblioteca math. Ela contém funções matemáticas básicas e constantes, como os números π e e.

E assim como a biblioteca random, é preciso importá-la antes de usar:


import math 

Aqui está uma tabela com as funções principais e constantes da biblioteca math em Python:

Função/Constante Descrição
math.pi Constante π, aproximadamente igual a 3.14159
math.e Base do logaritmo natural, aproximadamente igual a 2.71828
math.sqrt(x) Retorna a raiz quadrada de x
math.exp(x) Retorna e elevado à potência x
math.log(x[, base]) Retorna o logaritmo de x na base especificada; se a base não for especificada, retorna o logaritmo natural.
math.cos(x) Retorna o cosseno de x, onde x é dado em radianos
math.sin(x) Retorna o seno de x, onde x é dado em radianos
math.tan(x) Retorna a tangente de x, onde x é dado em radianos
math.ceil(x) Arredonda o número para cima até o inteiro mais próximo
math.floor(x) Arredonda o número para baixo até o inteiro mais próximo
math.factorial(x) Retorna o fatorial de x

Mesmo que você não seja muito fã de matemática e não pretenda usar essas funções nos próximos 10 anos, aqui tem pelo menos três muito úteis:

  • sqrt() — raiz quadrada de um número
  • ceil() — arredondar para cima até o inteiro mais próximo
  • floor() — arredondar para baixo até o inteiro mais próximo

Exemplos:


import math

number = 9.7
rounded_up = math.ceil(number)  # Arredonda para cima, resultado 10 
rounded_down = math.floor(number)  # Arredonda para baixo, resultado 9 
            
print("Número arredondado para cima:", rounded_up)
print("Número arredondado para baixo:", rounded_down)              
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION