1. Introdução ao Python

por . Universidade do Porto, Portugal.

1.1 Python

Python é uma linguagem de programação que tem ganho muita popularidade no ensino e na investigação, por ser fácil de aprender e devido à sua facilidade de extensão que faz com que existam muitos módulos disponíveis.

Python, é software livre, que pode ser instalado e utilizado em todos os principais sistemas operativos. Nas distribuições do sistema GNU/Linux Python costuma vir já instalado, porque muitos outros programas dependem dele.

1.2. Idle

Idle é uma interface gráfica para Python. Idle faz parte integral de Python e pode já estar instalada junto com o Python, mas em alguns sistemas vem num pacote separado. Por exemplo, em Ubuntu é necessário instalar o pacote adicionalidle.

Idle pode ser iniciado desde um menu ou escrevendo o comando "idle" numa consola. O programa Idle cria uma janela chamada Python Shell (figura 1.), onde podem ser escritos comandos do Python de forma interativa. Os três caracteres >>> indicam o ponto na janela onde deve ser escrito o próximo comando Python.

Idle
Figura 1.: Interface do programa Idle.

O menu "File" permite abrir um programa já escrito, em outra janela, e executá-lo. A janela Python Shell continuará aberta e nela serão apresentadas as mensagens de erro e tudo o que seja enviado pelo programa para a saída padrão.

1.3. Python como calculadora

Uma primeira aplicação do Python é como calculadora para fazer algumas contas. Por exemplo, para calcular o tempo que demora a luz do Sol a chegar à Terra, uma pesquisa na Internet mostra que a distância entre da Terra ao Sol, é 1.496×1011 m e a velocidade da luz que é 3.0×108 m/s. Como tal, o tempo em segundos que a luz demora em chegar do Sol até à Terra é o quociente:

E dividido por 60, dará o tempo em minutos. A conta pode ser feita na Shell do Python assim:

>>> 1.146e11/3e8/60
6.366666666666666

Podem usar-se variáveis para guardar resultados intermédios; por exemplo:

>>> tsegundos = 1.146e11/3e8
>>> tminutos = tsegundos/60

o valor que é guardado na variável não é mostrado no ecrã, mas pode ser mostrado dando o nome da variável:

>>> tminutos
6.366666666666666

As funções matemáticas habituais (logaritmo, seno, etc) não estão definidas previamente, mas podem ser incorporadas importando o módulo de funções matemáticas. Uma forma de importar todas as funções e símbolos existentes num módulo, neste caso o módulo com nome math, é a seguinte:

>>> from math import *

Uma vez importado o módulo matemático math, ficam disponíveis dois símbolos predefinidos, o valor de e a constante de Euler, e as 12 funções apresentadas na tabela 1.1

Tabela 1.1: Símbolos e funções do módulo math.
Símbolo ou função    Descrição
pi Número
e Número de Euler
fabs(x) Valor absoluto de x
sqrt(x) Raiz quadrada de x
log(x) Logaritmo natural de x
exp(x) Função exponencial de x
log10(x) Logaritmo em base 10 de x
sin(x) Seno de x (x em radianos)
cos(x) Cosseno de x (x em radianos)
tan(x) Tangente de x (x em radianos)
asin(x) Seno inverso de x (em radianos)
acos(x) Cosseno inverso de x (em radianos)
atan(x) Tangente inversa de x (em radianos)
floor(x) Elimina casas decimais de x, ficando inteiro

1.4. Blocos iterativos e condicionais

Como em qualquer linguagem de programação, Python inclui vários tipos de blocos iterativos e condicionais. Uma característica peculiar do Python, diferente de outras linguagens de programação, é que não são usados símbolos especiais para indicar o fim de uma linha ou de um bloco. Para indicar quais os comandos que fazem parte de um bloco basta com que esse bloco esteja alinhado de forma consistente: Todos os comandos num mesmo bloco devem ter o mesmo número de espaços em branco no início e um bloco interno deverá ter mais espaços do que o bloco externo. Em vez de espaços podem usar-se caracteres TAB, mas convém usar apenas um ou o outro, sem os misturar.

Idle ajuda na tarefa de alinhar os blocos. Por exemplo, para apresentar no ecrã uma lista com os cubos dos 5 primeiros números naturais, as seguintes duas linhas de código são suficientes:

>>> for i in [1, 2, 3, 4, 5]:
	i**3

1
8
27
64
125

o símbolo chave são os dois pontos; após escrever os dois pontos e clicar em &quo;enter", Idle já não escreve os caracteres >>> no início da linha, porque está a espera de um bloco. A segunda linha é alinhada automaticamente pelo Idle. Após termos escrito a segunda linha, foi necessário clicar duas vezes seguidas em &quo;enter" para que o bloco seja finalizado e executado e o ciclo iterativo seja executado.

Para obter uma lista unicamente dos cubos dos primeiros 40 naturais, que comecem pelo algarismo 2, acrescenta-se um bloco condicional if determinar quais dos números ao cubo começam por 2:

>>> for n in range(1, 41):
	cubo = n**3
	ordem = floor(log10(cubo))
	if floor(cubo/10**ordem) == 2:
		print(n, "ao cubo é", cubo)
		
3 ao cubo é 27
6 ao cubo é 216
13 ao cubo é 2197
14 ao cubo é 2744
28 ao cubo é 21952
29 ao cubo é 24389
30 ao cubo é 27000
31 ao cubo é 29791

Neste caso, em vez de usar uma lista (entre parêntesis retos) com os números de 1 até 40, usou-se a função range(1,41), que produz essa mesma lista. Observe-se que Idle identifica as funções próprias de Python a roxo, mas outras funções definidas por módulos adicionais, por exemplo floor, não é identificada como função própria de Python.

Usou-se também a função print para imprimir variáveis e texto no ecrã (o conjunto de caracteres alfanuméricos, entre aspas, é sublinhado a verde pelo Idle).

Outros operadores para comparar números são <, >, <=, >= e != (diferente). Um bloco if pode ter um sub-bloco else, que pode incluir outro bloco if, abreviado como elif. Por exemplo:

>>> n = 2
>>> if 0 < n < 3:
	print("entre 0 e 3")
elif n >= 3:
	print("maior ou igual a 3")
else:
	print("menor ou igual a zero")

entre 0 e 3

1.5. Funções

Para definir funções, por exemplo a função floor definida pelo módulo math, escreve-se o procedimento dentro de um bloco que começa com a palavra chave def, seguida pelo nome da função e a lista de variáveis de entrada, entre parêntesis.

Por exemplo, uma função rad que converta um ângulo em graus para radianos, pode ser definida assim:

>>> def rad(x):
	return pi*x/180

a seguir, a função rad poder usar-se para calcular funções trigonométricas de ângulos em graus. Por exemplo, o seno de 30°:

>>> sin(rad(30))
0.49999999999999994

Uma função em Python pode chamar-se a si própria de forma recursiva.