Introdução à Python

E mais: números e variáveis

1. Instalação?

Neste curso vamos adotar o serviço online repl.it como meio de usar a linguagem Python.

De qualquer forma, você pode (e eu recomendo!) instalar Python no seu próprio computador. O Python rodado localmente é mais rápido, não precisa de conexão com a internet, e só é limitado pelo seu computador. Você pode usar esse guia.

Para o início desta aula, você pode igualmente usar o site oficial da linguagem, mas recomendo mudar para o repl.it ou instalação para poder salvar arquivos e não perder seu trabalho.

2. Interagindo com o Python

Você pode escrever um arquivo chamado teste.py e invocar o executável python para ler e avaliá-lo. Ou você pode invocar o Python interativamente, iniciando o read-eval-print loop (ou REPL, de onde vem o nome do serviço repl.it)

3. Iniciação

Entrar num console/shell Python, digitar

print("Hello, World!")

e pressionar enter.

Parabéns, você escreveu seu primeiro programa Python! Mas não pare por aqui…

Tabela 1: O ritual de iniciação à programação (gerado pela IA DALL-E 2)
dalle-python-initiation.png dalle-python-initiation-painting.png

4. Aritmética: tipos e operadores matemáticos

O Python dispõe de três tipos números básicos: int para números inteiros (1, -3), float para números reais (1.0, -5.4), e complex para números complexos (1+2j). Não usaremos muito números complexos, mas usaremos int e float bastante.

4.1. Python como calculadora

O Python pode ser usado como uma calculadora poderosa e mais rápida (digitar é mais rápido do que clicar com o mouse).

Operação Python
soma 1 + 1
subtração 2 - 1.5
multiplicação 3 * 4
exponenciação 2 ** 3
divisão -1 / -1
resto 3 % 2

Teste você mesmo!

4.2. Precedência de operadores

Assim como na matemática da escola, os operadores tem precedência:

1 + 2 * 3

é equivalente

1 + (2 * 3)

e não

(1 + 2) * 3

Assim como na escola, usamos os parênteses para forçar a ordem das operações. Na dúvida, use parênteses!

4.3. Exercício: um pouco de matemática financeira

Geraldo investiu 1230 dinheiros em um fundo de investimento com taxa de performance de 20%. Seis meses depois, o investimento havia valorizado 5%, e ao final de um ano valorizou mais 7%. Neste meio tempo o benchmark do fundo valorizou de 800 unidades para 872 unidades.

A taxa de performance é cobrada sobre a parcela da rentabilidade do fundo que excede a variação do benchmark. Escreva o código (só aritmética, como vimos) que calcula o quanto será pago por Geraldo à título de taxa de performance, detalhando cada operação (isto é, não calcule nenhum valor fora do código, por exemplo na sua cabeça).

4.3.1. Comparem as respostas. Notaram algo de estranho?

Vocês não precisam de se preocupar com isso agora, mas notem que cálculos envolvendo floats (tipo float, números reais) não tem precisão perfeita.

É fácil entender por que: \(\frac{1}{3}\) tem expansão infinita, sendo igual a \(0.3333333\ldots\), mas em Python se entrarmos:

1 / 3

temos

0.3333333333333333

Isto por que um computador é uma máquina finita, com memória finita, e portanto é impossível representar uma fração de expansão infinita diretamente (ou tampouco um número irracional como \(π\)).

pi.png
Figura 1: Felizmente, nunca precisamos de precisão perfeita.

5. Abstraindo expressões

O código que escrevemos no exercício do cálculo de taxa de performance é simples, mas não é fácil de ler. Se nós tentarmos ler a conta que fizemos alguns dias depois provalmente não vamos mais lembrar que valores são o quê.

Além disso, se quisermos calcular quanto valerá o investimento depois de paga a taxa de performance, precisaremos repetir alguns cálculos. Neste caso simples isto não é um problema, mas se fosse uma computação mais longa repetí-la tornaria o código mais lento.

Repetir valores também torna mais trabalhoso modificá-los depois: se algum parâmetro do problema mudar é preciso procurá-lo e modificá-lo em vários lugares do código, e se esquecermos de algum teremos um bug 🐛

Para evitar repetições e facilitar a compreensão do código para eventuais leitores, podemos dar nomes à valores. Assim podemos reusar estes nomes ao invés de repetir valores e cálculos:

# todo texto seguido de um # (até o final da linha) é um comentário,
# que é ignorado pelo Python

# calculando a área de um círculo
pi = 3.14159
radius = 2.2
circle_area = pi * (radius ** 2)
print(circle_area) # mostrar resultado

Costumamos chamar essa operação de dar nome a um valor de atribuição (assignment), e o objeto ao qual o nome se refere é chamado de variável (variable). Talvez o nome variável venha do fato de que elas podem ser modificadas (isto é, podemos reatribur um outro valor ao nome).

# modificando o raio
radius = radius + 1 # podemos usar o valor antigo para definir o novo
print(circle_area)
new_circle_area = pi * (radius ** 2)
print(circle_area)
print(new_circle_area)

5.1. Nomes em Python

Tome cuidado: ao fazer um assignment, nem todo nome de variável é válido. Por exemplo, se tentarmos incluir o símbolo de igual como parte do nome da variável vamos acabar tendo um erro de sintaxe (nomecom= = 2) ou acabaremos definindo duas variáveis (a=b = 2).

Em Python, recomenda-se somente usar os seguintes caractereres: maiúsculas e minúsculas de A a Z (sem acentos), o underscore ou underline (_), e os dígitos de 0 a 9 (exceto no primeiro caractere do nome, a1 = 80 é válido, mas 1a = 80 não é).

5.2. Exercício: aritmética com variáveis

Refazer o exercício anterior sobre cálculo da taxa de performance de um fundo usando váriaveis com nomes evocativos para os cálculos intermediários. Calcule tanto o valor a ser pago como taxa de performance quanto o valor que sobra depois deste desconto.

5.3. Comparação com o Excel

Python é diferente do Excel: a expressão ao lado do símbolo de igualdade é calculada uma vez, e então é feita a atribuição. Como fica claro no exemplo do cálculo da área do círculo, valores obtidos de cálculos anteriores usando valores antigos de uma variável continuam iguais, e novas cálculos passam a usar o valor novo. A ordem de avaliação importa!

Faça a mesma conta da área de um círculo no Excel, e em seguida modifique o tamanho do raio do círculo. Note como estamos fazendo a mesma coisa em Python e em Excel, mas a forma de expressar o que queremos é diferente. Lembrando dos conceitos da última aula, podemos dizer que a sintaxe é diferente.

De forma análoga, a semântica também é diferente, apesar do resultado ser o mesmo: o Python calcula o valor das expressões durante a atribuição, ao passo que o Excel (re)calcula o valor das expressões sempre que uma sub-expressão da qual elas dependam mude.

Bruno Cuconato / 2024-08-07
TOP | HOME
Computação FGV/EPGE