Variáveis e Assinalação

Visão Geral

Perguntas
  • Como posso armazenar dados em programas?

Objetivos
  • Escrever programas que assinalam valores escalares a variáveis e realizar operações com esses valores.

  • Traçar corretamente mudanças de valores em programas que usam assinalamento de escalares.

Use variáveis para armazenar valores

Use print para mostrar valores.

print(primeiro_nome, 'tem', idade, 'anos de idade.')
Felipe tem 42 anos de idade.

Variáveis devem ser criadas antes de serem utilizadas.

print(sobrenome)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-c1fbb4e96102> in <module>()
----> 1 print(sobrenome)

NameError: name 'sobrenome' is not defined

Variáveis Persistem entre Células

Fique atento que é a ordem de execução das células que importa num Jupyter Notebook, não a ordem que elas aparecem. O Python vai se lembrar de todo o código que foi executado anteriormente, incluindo quaisquer variáveis que você tenha definido, independente da ordem no notebook. Logo se você definir variáveis mais embaixo no notebook e aí re-executar as células em cima, as variáveis definidas embaixo ainda estão presentes. Como um exemplo, crie duas células com o seguinte conteúdo, nessa ordem:

print(minha_var)
minha_var = 1

Se você executar nessa orde, a primeira célula vai dar um erro. No entanto, se você executar a primeira célula depois da segunda célula, ela vai imprimir 1. Para prevenir confusão, algo que pode ser útil é usar a opção Kernel -> Restart & Run All que limpa o interpretador e executa tudo de um novo estado, do início até o fim.

Variáveis Podem ser Usadas em Operações

idade = idade + 3
print('Idade em três anos:', idade)
Idade em três anos: 45

Use um index para selecionar um caracter de uma string

Um exemplo de indexação

atomo = 'helio'
print(atomo[0])
h

Use uma fatia para pegar uma substring

nome_atomo = 'sodio'
print(nome_atomo[0:3])
sod

Use a função embutida len para descobrir o tamanho de uma string.

print(len('helio'))
5

Python é case-sensitive.

Use nomes informativos para variáveis.

flabadab = 42
ewr_422_yY = 'Felipe'
print(ewr_422_yY, 'tem', flabadab, 'anos de idade.')

Trocando valores

Preencha a tabela mostrando os valores das variáveis nesse programa depois que cada linha é executada.

# Comando  # Valor de x   # Valor de y   # Value de swap #
x = 1.0    #              #              #               #
y = 3.0    #              #              #               #
swap = x   #              #              #               #
x = y      #              #              #               #
y = swap   #              #              #               #

Solução

# Comando  # Valor de x   # Valor de y   # Value de swap #
x = 1.0    # 1.0          # not defined  # not defined   #
y = 3.0    # 1.0          # 3.0          # not defined   #
swap = x   # 1.0          # 3.0          # 1.0           #
x = y      # 3.0          # 3.0          # 1.0           #
y = swap   # 3.0          # 1.0          # 1.0           #

Essas três linhas trocam os valores de x e y usando a variável swap para armazenamento temporário. Isso é uma prática comum de programação.

Predizendo valores

Qual é o valor final de posicao no programa abaixo? (Tente predizer o valor sem rodar o programa, aí cheque se sua predição estava certa.)

inicial = 'acima'
posicao = inicial
inicial = 'abaixo'

Solução

print(posicao)
acima

A variável inicial é assinalada ao valor 'acima'. Na segunda linha, a variável posicao também recebe a a string de valor 'acima'. Na terceira linha, a variável inicial é dada o valor 'abaixo', mas a variável posicao permanece como seu valor de string 'acima'.

Desafio

Se você assinalar a = 123, o que acontece se você tentar pegar o segundo dígito de a com a[1]?

Solução

Números não são strings ou sequências e o Python vai dar um erro quando você tentar fazer uma operação de index em um número. No próximo episódio sobre tipos e conversão de dados vamos aprender mais sobre tipos e como converter entre diferentes tipos. Se você quer o N-ésimo dígito de um número você pode convertê-lo para uma string usando a função embutida str e então executar uma operação de index nessa string.

a = 123
print(a[1])
TypeError: 'int' object is not subscriptable
a = str(123)
print(a[1])
2

Escolhendo um nome

Qual é o um nome de variável melhor, m, min, ou minutos? Por quê? Dica: pense sobre qual código você gostaria de herdar de alguém que está saindo da empresa:

  1. ts = m * 60 + s
  2. tot_seg = min * 60 + seg
  3. total_segundos = minutos * 60 + segundos

Solução

minutos é melhor, porque min pode significar algo como “mínimo” (e também é uma função embutida do Python que vamos ver mais para a frente).

Praticando fatias

O que o programa a seguir imprime?

nome_atomo = 'carbono'
print('nome_atomo[1:3] é:', nome_atomo[1:3])

Solução

nome_atomo[1:3] é: ar

Conceitos de fatias

  1. O que coisa[baixo:cima] do?
  2. O que coisa[baixo:] (com um valor antes dos dois pontos) faz?
  3. O que coisa[:cima] (com um valor depois dos dois pontos) faz?
  4. O que coisa[:] (somente dois pontos) faz?
  5. O que coisa[numero:algum-numero-negativo] faz?
  6. O que acontece se você escolhar um valor cima que está fora de alcance (i.e., tente nome_atomo[0:15])?

Soluções

  1. coisa[baixo:cima] retorna uma fatia de baixo até o valor antes de cima.
  2. coisa[baixo:] retorna uma fatia de baixo até o final de coisa coisa.
  3. coisa[:cima] retorna uma fatia do início de coisa até o valor antes de cima.
  4. coisa[:] retorna toda a coisa.
  5. coisa[numero:algum-numero-negativo] retorna uma fatia de numero até algum-numero-negativo valores do fim de coisa.
  6. Se uma parte de uma fatia está fora de alcance, a operação não falha. nome_atomo[0:15] dá o mesmo resultado que nome_atomo[0:].

Pontos-chave

  • Usar variáveis para armazenar valores.

  • Usar print para mostrar valores.

  • Variáveis persistem entre células.

  • Variáveis precisam ser criadas antes de serem usadas.

  • Variáveis podem ser usadas em operações.

  • Use um índice para pegar um único caracter de uma string.

  • Use uma fatia para pegar uma substring.

  • Use a função embutida len para encontrar o comprimento de uma string.

  • Python é case-sensitive.

  • Use nomes informativos para variáveis.