segunda-feira, 15 de agosto de 2016

Tipos de variável

Olá mais uma vez.
Vamos lá então voltar às variáveis. Lembra-se daquela diferença entre 6/2 = 3.0 ou 3? Sim, estes resultados têm um tipo diferente: 3.0 é um número de vírgula flutuante (isto é, permite casas decimais), enquanto 3 é um número inteiro. Se experimentarmos:

>>> type(3)
<class 'int'>
>>> b=2
>>> type(3.0)
<class 'float'>
Resultado interessante, não é? A função type() devolve-nos o tipo do valor ou variável que lhe fornecemos: int para inteiro e float para vírgula flutuante. Outra diferença entre a versão 2.x e a 3.x: na versão 2.x, surge: <type 'tipo'>. Mais geralmente, a função type() devolve-nos o tipo (ou classe) de qualquer objeto, e veremos depois o que significa isto.
A principal diferença entre estes tipos de variável prende-se com o modo de armazenamento interno destes valores no computador. Além disso, de um modo geral as operações entre variáveis ou valores do mesmo tipo resulta no mesmo tipo, com a notável exceção da divisão de números inteiros que, como já vimos, em Python 3.0 resulta num número float. De momento, não dá para perceber qual a utilidade entre ter números inteiros ou de vírgula flutuante, mas veremos isso mais tarde, quando falarmos em enumeração.
Já agora, uma curiosidade: o Python permite utilizar também números complexos (ou imaginários). Para representar a parte imaginária, usa-se a letra j (e não a i, a que estamos habituados). Experimente:
>>> (3 + 5j) + (2 - 7j)
(5-2j)
>>> 3 + 5j + 2 - 7j
(5-2j)
>>> type(5-2j)
<class 'complex'>
Alguns pormenores a ter em atenção: na primeira linha usei parêntesis só por claridade, pois como se percebe na segunda entrada não são necessários. E podemos ver que estes valores são do tipo complex.
Para resumir: operações entre inteiros podem resultar em inteiros ou de vírgula flutuante; entre inteiros e de vírgula flutuante resulta sempre em vírgula flutuante; entre valores em vírgula flutuante e complexos resulta sempre complexos.
Até agora, só vimos números. Mas existem outros tipos de valores: as cadeias de caracteres, que constituem texto. Estas são definidas colocando caracteres entre plicas ('') ou entre aspas (""). Por exemplo:
>>> "Olá mundo!"
'Olá mundo!'
>>> letras = 'Olá mundo!'
>>> letras
'Olá mundo!'
>>> type(letras)
<class 'str'>
Ora então o que temos aqui? Vemos que, como sempre, quando colocamos um valor em '>>>', obtermos como resultado esse valor. Embora tenhamos definido a cadeia com aspas, o resultado apareceu com plicas. Isto só muda se inserirmos alguma plica dentro do texto entre aspas. O objetivo de termos duas maneiras de criar as cadeias é para podermos inserir plicas ou aspas dentro do texto de modo mais fácil.
Também podemos criar variáveis com texto, e ver o seu conteúdo. e o tipo destes valores ou variáveis é str, diminutivo de string. Aqui estão mais umas coisas que se podem fazer com as cadeias:
>>> "Olá " + "mundo!"
'Olá mundo!'
>>> "Olá! "*5
'Olá! Olá! Olá! Olá! Olá! '
>>> letras = 'abcdef'
>>> letras[2]
'c'
>>> letras[2:5]
'cde'
>>> 'cde'[1]
'd'
Como seria de esperar, podemos concatenar cadeias. O que possivelmente já não estaria à espera é de poder multiplicá-las! Claro que só se pode multiplicar uma cadeia por um inteiro, e o resultado está à vista.
E finalmente, aquela coisa dos parêntesis retos ([]) é chamada de slicing (em português poderia traduzir-se por seccionamento, mas não me soa tão bem...), e pode usar-se com definição de um ou dois números: se usarmos um, vai buscar o caracter que se encontra na posição definida pelo número; mas atenção que a contagem começa com zero!! No exemplo acima, o caracter 'c' é o terceiro de letras, mas fica na posição 2 se contarmos a partir de zero. Quando se usam dois números separados por ':', o primeiro número aponta para a posição do primeiro caracter a incluir, e o segundo número indica qual o caracter onde se para, não incluindo esse. No exemplo acima, 2 é o terceiro caracter e 5 é o sexto ('f'), que já não foi incluído no resultado. A última linha mostra que podemos seccionar diretamente uma cadeia, não precisa de ser uma variável. Mais uma vez, isto não é tudo, e voltaremos a este assunto mais tarde...
E vamos terminar com o último tipo elementar de que falta falar: o booleano. Este só pode assumir dois valores: verdadeiro (True) ou falso (False). Sim, têm de ser com a primeira letra maiúscula.
>>> True
True
>>> True == False
False
>>> True != False
True
>>> type(True)
<class 'bool'>
True é um valor com resultado True. Na segunda inserção, estamos a perguntar se True é igual a False, e como não são iguais, o resultado é False. Acabámos de apresentar outro operador: a igualdade (==), que resulta em verdadeiro ou falso. São dois sinais de igual, para não se confundir com a atribuição de variáveis, só com um sinal de igual. Podemos comparar várias coisas, como (mais uma vez) veremos mais tarde. Depois, temos o operador de desigualdade (!=), que verifica se dois objetos são diferentes. Finalmente, mostramos que o tipo destes valores é booleano ('bool').
E por agora chega.

Sem comentários:

Enviar um comentário