Ir para o conteúdo
ou

Software livre Brasil

Magnun

Nenhum artigo selecionado ainda.
 Voltar a Blog
Tela cheia

[Curso de Python] Tipos Built-In - Parte 2

19 de Outubro de 2010, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 242 vezes

Antes de prosseguir leia os artigos anteriores aqui



Na última aula começamos a analisar os tipos built-in um por um. Vimos os tipos None, NotImplemented e o Ellipsis. Hoje daremos continuidade nesse estudo. Hoje veremos rapidamente os tipos numéricos.

Tipos Built-In - Parte 2




Retomando a lista dos tipos built-in:
  • None;
  • NotImplemented;
  • Ellipsis;
  • Numericos:
    • int;
    • long;
    • float;
    • bool;
    • complex;
  • Sequências Imutáveis:
    • str;
    • unicode;
    • tuple;
  • Sequências Mutáveis:
    • list;
    • bytearray;
  • Sets:
    • set;
    • frozenset;
  • Mapeamentos:
    • dict;
  • slice;
  • callable;
  • file;


Os tipos numéricos já foram brevemente abordados em aulas passadas, então comentarei um pouco mais sobre eles.


Int

Inicialmente temos o tipo inteiro identificado pela palavra int. Esse tipo representa um número inteiro, positivo ou negativo, nulo ou não-nulo que esteja entre -2147483648 e 2147483647. Caso uma operação matemática gere um número que extrapola essa faixa, ele é automaticamente retornado como um inteiro Longo (em alguns casos pode ocorrer o erro OverflowError).

Código python:
>>> type(12)
<type 'int'>
>>> 12**8
429981696
>>> 12**9
5159780352L
>>> type(12**9)
<type 'long'>
>>>



Long

Os números inteiros longos não estão restritos a uma faixa (como os inteiros), estão restritos somente à disponibilidade de memória virtual. Isto quer dizer que o interpretador do Python aloca espaços de memória dinamicamente possibilitando ter números de tamanhos incríveis. Quando necessário, o resultado de uma operação é automaticamente adaptado para um inteiro longo. Em um sistema de 32 bits o número 2.147.483.647 é o menor inteiro simples disponível.

Código python:
>>> int_simples = 10**9
>>> int_simples
1000000000
>>> type(int_simples)
<type 'int'>
>>>
>>> int_longo = 10**10
>>> int_longo
10000000000L
>>> type(int_longo)
<type 'long'>
>>>

O processo inverso não ocorre naturalmente, é necessário converter manualmente o inteiro longo para inteiro simples.
Código python:
>>> resultado = 10000000000L/100
>>> resultado
100000000L
>>> type(resultado)
<type 'long'>
>>> int(resultado)
100000000
>>> type(int(resultado))
<type 'int'>
>>>



Curiosidade

Uma curiosidade sobre os números é que eles podem ser escritos de forma binário ou hexadecimal. para escrever um número no modo binário basta preceder o número por 0b. Segue alguns exemplos:
Código python:
>>> 0b101111
47
>>> 0b011
3
>>> 0b111011111000011
30659

Para escrever um número em hexadecimal, utilizamos a notação 0x antes do número. Segue alguns exemplos:
Código python:
>>> 0xff
255
>>> 0x0a
10
>>>


Outra forma de se obter números através de representações binárias/hexadecimais é utilizar o construtor int:
Código python:
>>> print int('01010101111',2)
687
>>> int('1010', 2)
10
>>>
>>> int('ff', 16)
255
>>> int('b', 16)
11
>>>

Como podemos ver basta informar o número na forma de string e informar posteriormente a base numérica (2 para binário e 16 para hexadecimal).

Também é possível criar uma representação binária de um número inteiro comum. Note que o resultado é uma string:
Código python:
>>> bin(173)
'0b10101101'


Para criar uma representação hexadecimal de um número inteiro comum utilize a função hex:
Código python:
>>> hex(111)
'0x6f'
>>> hex(255)
'0xff'
>>> hex(14)
'0xe'
>>>



Float

O tipo float, são números que se utilizam de casas decimais para representar valores reais.

Código python:
>>> 1.2
1.2
>>> 2.75
2.75
>>>

O Python utiliza o ponto como marcador de casas decimais. Algumas vezes o Python pode apresentar números "incertos". Por exemplo:

Código python:
>>> 1.2-1.0
0.199999999999999996

Isto não é um bug. Na verdade isso não é relacionado com o Python em si, mas sim com a forma que a plataforma C manipula pontos flutuantes e com a imprecisão adicionada pelo processo de convertes números para strings com um numero definido de casas decimais.

A representação interna do ponto flutuante usa um numero fixo de dígitos binários para representar o numero decimal, Alguns números decimais ão podem ser representados precisamente, resultando em pequenos erros de aproximação.

Para os matemáticos curiosos: é fácil provar que 0.99999... é igual a 1, aqui vai um link: 0.999... - Wikipedia, the free encyclopedia


Booleanos

Os valores booleanos assumem apenas 2 valores, verdadeiro e falso. Eles se comportam como 1 e 0.

Código python:
>>> True
True
>>> False
False
>>>
>>>
>>> True + True
2
>>> True + False
1
>>> False + False
0
>>>



Complex

Números complexos são muito utilizados na matemática e na engenharia. Eles são representados por dois números com ponto flutuante (ou inteiros/longos), parte real e imaginária. A parte imaginária sempre está acompanhada pelo número complexo j, dependendo do livro adotado também é utilizado o i, ambos são uma substituição para o número complexo srq(-1) (raix quadrada de um).

Em Python, semelhante ao Long, não existe uma limitação de tamanho para números complexos. Isso se deve ao fato dos números complexos serem pares de números que se comportam de forma diferente ao serem somados, subtraídos, multiplicados e divididos. Dessa forma esses pares podem ser inteiros, pontos flutuantes ou longos.

Código python:
>>> 1 + 2j
(1+2j)
>>>
>>> -5 + 4j
(-5+4j)
>>>
>>> 2j
2j
>>>

O Python suporta também é capaz de realizar operações matemáticas com números complexos:

Código python:
>>> (2 - 3j) + (1 + 5j)
(3+2j)
>>> (2 - 3j) - (1 + 5j)
(1-8j)
>>> (2 - 3j)*(-1j)
(-3-2j)
>>> (2 - 3j)/(-2+2j)
(-1.25+0.25j)
>>> (2 - 3j)**2
(-5-12j)
>>>


Outra Curiosidade

O Python é um ótima linguagem também para os matemáticos. Nela é possível representar números extremamente grandes ou extremamente pequenos utilizando a notação científica Notação científica - Wikipédia, a enciclopédia livre . Vamos a alguns exemplos:
Código python:
>>> 2e10
20000000000.0
>>> 5e-3
0.0050000000000000001
>>>

Para imprimir números em notação científica basta usar o identificador %e na formatação:
Código python:
>>> x = 100000
>>> y = 0.00001
>>> print 'Numero grande %.2e\nNumero pequeno %.2e'%(x, y)
Numero grande 1.00e+05
Numero pequeno 1.00e-05
>>>

Lembrando que o '.2', entre o '%' e 'e', define que serão utilizadas somente duas casas decimais de precisão.

Até a próxima pessoal...

Fonte: http://under-linux.org/blogs/magnun/%5Bcurso-de-python%5D-tipos-built-parte-2-2248/

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.