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
- Variáveis são nomes para valores.
- No Python o símbolo
=assinala o valor da direita ao nome na esquerda. - A variável é criada quando o valor é assinalado a ela.
-
Aqui, o Python assinala uma idade à variável
idadee um nome em aspas à variávelprimeiro_nome.idade = 42 primeiro_nome = 'Felipe'
- Nomes de variáveis
- podem conter somente letras, números e underline
_(geralmente usado para separar palavras em nomes compridos de variáveis) - não podem começar com um número
- são case sensitive (idade, Idade e IDADE são três variáveis diferentes)
- podem conter somente letras, números e underline
- Nomes de variáveis que começam com underline como
__campeao_de_87têm um significado especial, então vamos evitá-los até entendermos essa convenção.
Use print para mostrar valores.
- Python tem uma função embutida
printque imprime as coisas como texto. - Chame a função (i.e., diga para o Python executá-la) usando o nome da função.
- Passe valores para uma função (i.e., as coisas a serem imprimidas) entre parênteses.
- Para adicionar uma string no que vai ser imprimido, coloque a string entre aspas simples ou duplas.
- Valores passados para uma função são chamados de argumentos.
print(primeiro_nome, 'tem', idade, 'anos de idade.')
Felipe tem 42 anos de idade.
printautomaticamente coloca um espaço simples entre items para separá-los.- E coloca uma nova linha no final.
Variáveis devem ser criadas antes de serem utilizadas.
- Se uma variável não existe ainda, ou se o seu nome foi escrito errado, o Python reporta um erro (diferente de outras linguagens, que podem “adivinhar” um valor padrão).
print(sobrenome)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-c1fbb4e96102> in <module>()
----> 1 print(sobrenome)
NameError: name 'sobrenome' is not defined
- A última linha de uma mensagem de erro costuma ser a mais informativa.
- Vamos dar uma olhada em mensagens de erro depois.
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 = 1Se 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çãoKernel -> Restart & Run Allque limpa o interpretador e executa tudo de um novo estado, do início até o fim.
Variáveis Podem ser Usadas em Operações
- Podemos usar variáveis em operações como se fossem valores.
- Lembre-se, assinalamos o valor
42paraidadealgumas linhas atrás.
- Lembre-se, assinalamos o valor
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
- Os caracteres (letras, números, pontuações, etc) em uma string são
ordenados. Por exemplo, a string
'AB'não é o mesmo que'BA'. Por causa dessa ordem, podemos tratar a string como uma lista de caracteres. - Cada posição na string (primeira, segunda, etc.) é dada um número. Esse número é chamado de index (ou índice), ou também de subscripto.
- Índices são numerados do 0.
- Use a posição do index em colchetes para selecionar o caracter naquela posição.
atomo = 'helio'
print(atomo[0])
h
Use uma fatia para pegar uma substring
- Uma parte de uma string é chamada de substring. Uma substring pode ter somente um único caracter.
- Um item em uma lista é chamado de um elemento. Sempre que tratamos uma string como se fosse uma lista, os elementos da string são seus caracteres individuais.
- Uma fatia é uma parte de uma string (ou, de forma mais geral, qualquer coisa parecida com uma lista).
- Pegamos uma fatia de uma string usando
[inicio:fim], ondeinicioé substituido pelo index do primeiro elemento que queremos efimé substituído pelo index do elemento logo após o último elemento que queremos. - Matematicamente, pode-se dizer que uma fatia seleciona
[inicio:fim]. - A diferença entre
fimeinicioé o comprimento (length) da fatia. - Selecionar uma fatia não altera o conteúdo da string original. Invés disso, a fatia é uma cópia de parte da string original.
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
- Funções aninhadas são avaliadas de dentro para fora, assim como na matemática
Python é case-sensitive.
- O Python entende letras maiúsculas e minúsculas são diferentes,
então
Nomeenomesão variáveis diferentes. - Existem convenções para usar letras maiúsculas como a primeira letra de uma variável então vamos usar letras minúsculas por enquanto.
Use nomes informativos para variáveis.
- Python não liga para o que você chama uma variável, desde que obedeça as regras (caracteres alfanuméricos e o underline).
flabadab = 42
ewr_422_yY = 'Felipe'
print(ewr_422_yY, 'tem', flabadab, 'anos de idade.')
- Use nomes informativos para variáveis para ajudar outras pessoas a entenderem o que programa faz.
- A “outra pessoa” mais importante é você no futuro.
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
xeyusando a variávelswappara armazenamento temporário. Isso é uma prática comum de programação.
Predizendo valores
Qual é o valor final de
posicaono 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)acimaA variável
inicialé assinalada ao valor'acima'. Na segunda linha, a variávelposicaotambém recebe a a string de valor'acima'. Na terceira linha, a variávelinicialé dada o valor'abaixo', mas a variávelposicaopermanece como seu valor de string'acima'.
Desafio
Se você assinalar
a = 123, o que acontece se você tentar pegar o segundo dígito deacoma[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
stre então executar uma operação de index nessa string.a = 123 print(a[1])TypeError: 'int' object is not subscriptablea = str(123) print(a[1])2
Escolhendo um nome
Qual é o um nome de variável melhor,
m,min, ouminutos? Por quê? Dica: pense sobre qual código você gostaria de herdar de alguém que está saindo da empresa:
ts = m * 60 + stot_seg = min * 60 + segtotal_segundos = minutos * 60 + segundosSolução
minutosé melhor, porqueminpode 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
- O que
coisa[baixo:cima]do?- O que
coisa[baixo:](com um valor antes dos dois pontos) faz?- O que
coisa[:cima](com um valor depois dos dois pontos) faz?- O que
coisa[:](somente dois pontos) faz?- O que
coisa[numero:algum-numero-negativo]faz?- O que acontece se você escolhar um valor
cimaque está fora de alcance (i.e., tentenome_atomo[0:15])?Soluções
coisa[baixo:cima]retorna uma fatia debaixoaté o valor antes decima.coisa[baixo:]retorna uma fatia debaixoaté o final de coisacoisa.coisa[:cima]retorna uma fatia do início decoisaaté o valor antes decima.coisa[:]retorna toda acoisa.coisa[numero:algum-numero-negativo]retorna uma fatia denumeroatéalgum-numero-negativovalores do fim decoisa.- Se uma parte de uma fatia está fora de alcance, a operação não falha.
nome_atomo[0:15]dá o mesmo resultado quenome_atomo[0:].
Pontos-chave
Usar variáveis para armazenar valores.
Usar
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
lenpara encontrar o comprimento de uma string.Python é case-sensitive.
Use nomes informativos para variáveis.