Mostrar mensagens com a etiqueta str. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta str. Mostrar todas as mensagens

segunda-feira, 26 de dezembro de 2016

Alguns pormenores

Cá estou de volta, depois de uma ausência de alguns meses. Não, não desisti de escrever, apenas deixei de ter tempo. Mas agora vou redimir-me.
E vou aproveitar este regresso para atar algumas pontas soltas, de coisas que aprendi entretanto, aqui e ali. Vamos a isto.
Vamos começar por voltar ao IDLE. Há uma coisa que descobri e que dá muito jeito quando se estão a fazer contas nas máquinas de calcular: usar o último valor calculado. Nas calculadoras, pode ser o "ANS", ou "Recall". Mas vamos ver com exemplos, que é sempre mais fácil de entender:
>>> 2 + 3
5
>>> _ * 5
25
>>> _
25
Como se consegue perceber, usar o símbolo '_' permite-nos obter o último objeto inserido ou obtido no modo interativo. Sim, o último objeto. Se fizermos o mesmo com cadeias de caracteres, também resulta:
>>> 'Texto escrito'
'Texto escrito'
>>> _
'Texto escrito'
Giro, não é?
E outra coisa que descobri: os números inteiros em Python tem precisão infinita!!! Não fazia ideia! O que quer isto dizer? Experimentem:
>>> 2324328643274826487*23428734632846
54456078982808883241978300992002
>>> _ * 55465465465465465464564
3020431768205645866255231705359115636508579632978417128
>>> _ ** 4
83229276179341914052177247922360198310600096860756479458237334163417416895989199680022872164696168962399992046990547315630606883203434211280232750588277764833775698281886726905118556842774846290016959699906061197971456
Ora aqui está: ao contrário de outras linguagens, o cálculo com inteiros apresenta sempre todos os algarismos!
E para finalizar, mais um detalhe. Já tínhamos visto que as cadeias de caracteres se podem definir com ' ' ou com " ". Mas faltava mencionar que também podem ser definidas com 3 aspas (""" """). A vantagem destas é que podemos definir texto ao longo de várias linhas:
>>> """esta linha
vai durar várias
linhas"""
'esta linha\nvai durar várias\nlinhas'
Note que apareceram ali uns '\n' pelo meio. Isto é um código de nova linha que é interpretado quando se usa o comando print(). Ainda voltaremos a ver para que servem estas cadeias...

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.