• Python
  • 01. Introdução ao Python
  • Variáveis

01. Introdução ao Python

Variáveis

Na última atividade rodamos várias linhas de código e experimentamos para ver o resultado que elas obteriam. Nesta atividade vamos desenvolver nossas habilidades de leitura e compreensão de código Python.

Variáveis#

Podemos armazenar valores ou resultados de expressões matemáticas em variáveis. Uma variável é como se fosse uma caixa com uma etiqueta com o seu nome. O conteúdo armazenado na caixa pode ser acessado a partir do nome em sua etiqueta. Considere o exemplo a seguir:

x = 5
print(x)

Devemos ler a primeira linha como: "a variável x recebe o valor 5". É como se disséssemos: "interpretador Python, por favor, crie na memória do computador uma caixa chamada x e guarde lá dentro o valor 5."

A linha seguinte pede para o Python imprimir o conteúdo da variável x, nesse caso, 5. Assim, o Python vai escrever 5 no terminal.

Caixa criada para armazenar o valor 5 rotulado com o nome x

Formatando strings com Python#

Já vimos que quando queremos guardar texto nos nossos programas em Python colocamos ele entre aspas ("Texto a ser guardado vai aqui!"). Porém, frequentemente queremos inserir valores que ainda não conhecemos dentro desse texto. No exemplo acima isso acontece: queremos colocar no meio do texto o conteúdo de x, y e z mas não sabemos ainda qual será esse valor. Para isso usamos um tipo especial de string chamado f-string em que é possível substituir partes da string por valores de variáveis.

Tip 1

O f de f-string vem de format, indicando que podemos formatar texto dentro da string.

Vamos analisar parte a parte da f-string do primeiro exercício:

  1. Sempre precisamos do f na frente da string para indicar que queremos que ela seja formatada
  2. Cada variável entre { } é substituída pelo seu valor no momento da criação da string

Quando chegamos na linha do print primeiro fazemos a formatação da f-string, substituindo todos as variáveis pelos seus valores. A função print já vai receber a string com os valores substituídos e só coloca ela na saída do terminal.

Teste de Mesa#

O teste de mesa consiste em simular manualmente a execução de um programa. A ideia é simular o que o interpretador Python vai fazer em cada linha do código. Ou seja, vamos tentar entender como o computador "pensa" ao executar o nosso programa.

Emoji pensador analisando o código Python.

Conseguir fazer o teste de mesa pode ajudar no momento da aprendizagem. Se não conseguirmos entender algum código, podemos fazer um teste de mesa para entender o que o interpretador Python está fazendo ao executar o nosso código.

Outra vantagem dos testes de mesa, são em momentos em que o nosso código possui algum erro e que não conseguimos identificar sua origem.

Antes de explicar como fazer um teste de mesa, vamos apresentar o desafio dos três copos.

Exercise 5

Desafio dos três copos

Considere o código a seguir. Neste código, definimos três variáveis copo1, copo2 e copo3 para representar os copos do desafio. A bola será representada pelo valor 1.

Sem testar o código, em qual dos copos a bola estará escondida? Ou melhor, qual variável armazenará o valor 1 ao final da execução do código?

"""
Desafio dos 3 copos

O objetivo é descobrir em qual dos copos está escondido
o número 1 ao final da execução do código.
"""

copo1 = 0
copo2 = 0
copo3 = 1
copo1 = copo1 + 2
copo3 = copo1
copo2 = copo3 ** 0
copo1 = copo2 % 1
copo3 = copo2 * 0

Answer

A bola estava escondida dentro do copo2!

Como foi ler o código e simular o interpretador Python? A seguir vamos usar o teste de mesa para simular a execução linha a linha do código acima.

Não existe uma forma definitiva para fazer o teste de mesa. Aqui vamos apresentar uma sugestão, posteriormente você pode pesquisar outras formas de se fazer o teste de mesa e utilizar a que mais te agradar.

  1. Identifique todas a variáveis utilizadas no código e monte uma tabela.

    Tabela com as variáveis do código do Desafio 3 copos

  2. Vamos olhar linha a linha do código e atualizar a tabela sempre que o valor de alguma variável for atualizada.

    Gif animado com o teste de mesa completo

É possível realizar um teste de mesa apenas com papel e caneta. Você pode sempre utilizar esse processo para verificar se o seu programa faz o que era esperado.

Exercise 6

Considera o código abaixo com outra versão do Desafio dos três copos. Tente utilizar o teste de mesa para o código abaixo e responda: Qual é o valor armazenado na variável copo2 no momento em que o interpretador Python está lendo a linha 7?

(Dica: Utilize papel e lápis para montar o teste de mesa para este exercício.)

1
2
3
4
5
6
7
8
9
copo1 = 2
copo2 = 3
copo3 = 4
copo2 = copo2 // 2
copo3 = copo1 + copo3
copo2 = 3 ** copo2
copo1 = copo3 % copo1
copo2 = copo3 - (copo2 + 3)
copo3 = - copo3 + (copo1 + 7)

Answer

O valor armazenado na variável copo2 e o valor 7.

Teste de mesa para o desafio dos três copos, no momento em que o interpretador Python está lendo a linha 7.

Podemos perceber pela imagem acima, que a linha 7 do código não altera o valor da variável copo2. Desta forma, a célula que corresponde ao valor da variável copo2 no instante em que o Python está lendo a linha 7 está vazia. Mas é possível verificar o valor armazenado pela variável copo2, procurando o último valor que aparece na coluna copo2.

Outros tipos de dados#

Podemos usar variáveis para armazenar qualquer tipo de dados em Python:

Exercise 7

Considere o código a seguir:

disciplina = 'Developer Life'
print(disciplina)
Qual o tipo do dado que estamos armazenando na variável disciplina?

Answer

A variável disciplina armazena um valor do tipo String.

O interpretador Python identifica como Strings qualquer valor entre aspas simples ou duplas. Então, se um número estiver cercado por aspas ("2022"), o Python vai considerar este valor como uma String.

Exercise 8

Considere o código a seguir:

disciplina = 'Developer Life'
print('disciplina')

Ao testar o código acima, o que será impresso no terminal?

Answer

Note a importância das aspas. Ao executar a linha print(disciplina) do exercício anterior, o Python mostrará na tela a string armazenada na variável disciplina, ou seja, 'Developer Life'. Ao utilizarmos as aspas (print('disciplina')), o Python exibe o texto 'disciplina' no terminal.

Exercise 9

Considere o código a seguir:

num_alunos = 120
print(num_alunos)
Qual o tipo do dado que estamos armazenando na variável num_alunos?

Answer

As variáveis também podem armazenar números inteiros.

Exercise 10

Considere o código a seguir:

base = 0.5
altura = 4.2e1  # 4.2 x 10**1 => 42.0
area = base * altura / 2.0

Qual o tipo de dado que as variáveis acima estão armazenando?

Answer

As variáveis também podem armazenar números reais. Na computação, estes números são chamados de números em ponto flutuante.

Ponto flutuante (Float)#

Vamos falar um pouco mais sobre os números reais? Como dito anteriormente, na computação os números reais são chamados de ponto flutuante (float).

Exercise 11

Nos exercícios anteriores, montamos algumas expressões matemáticas que resultaram em um valor do tipo float.

Quais dos números abaixo o Python NÃO considera como do tipo float?

Answer

O valor 3,1415 não é do tipo float.

Na matemática, estamos habituados a representar os números reais utilizando a vírgula (,). Porém, no Python devemos representar os números reais utilizando o ponto (.).

Você pode ter pensando também que o resultado da expressão 0.5 * 2 resultaria no valor 1 e seria considerado do tipo inteiro. Porém, o resultado de 0.5 * 2 resulta no valor 1.0, considerado como float pelo Python.

No Python, sempre que uma expressão matemática envolver um número do tipo float, o resultado vai ser do tipo float. Mesmo o resultado sendo um número inteiro, por exemplo, 1.5 * 2 resultará no valor 3.0.

As operações de divisão também resultam em valor do tipo float, mesmo se a divisão for entre números inteiros. Por exemplo, 4/2 resultará no valor 2.0.

Não se preocupe se esses conceitos não ficarem claros. Esta seção tem o intuito de apresentar algumas curiosidades sobre os números em ponto flutuante.

Exercise 12

Quais dos resultados abaixo NÃO resulta em um valor float?

Answer

A expressão 2 * 3 resulta no valor inteiro 6.

A operação de multiplicação não segue a mesma regra da operação de divisão.

Exercise 13

Faça o exercício Trocando os valores de x e y

Acessar exercício

No trecho de código a seguir, damos alguns spoilers do que vamos ver nas próximas aulas.

"""
Demonstração de uso de variáveis com diversos tipos de dados em Python.

@author: Profs. de Developer Life.
"""

# Variáveis podem armazenar os valores especiais True e False
# São usados em expressões lógicas, ou também chamadas
# expressões booleanas.
a = True
b = False
c = a or b  # Operação booleana 'OU'.

# Variáveis armazenam muitos outros tipos que veremos depois.
ponto = (3.2, 5.7)  # Tupla.
teste = [5.2, 'laranja', False, 42]  # Lista.
notas = {'dessoft': 10.0, 'gde': 10.0,
         'modsim': 10.0}  # dicionário.