Variáveis
Teoria
O que são? Onde vivem?
Fala aí, doido! Imagina que você tem alguma informação e você quer guardar ela em algum lugar. Você pode usar uma variável, que é como uma caixinha onde você pode armazenar informações pra conseguir ter acesso depois, e é o assunto que a gente vai discutir hoje!
As variáveis são os recursos mais importantes da programação, e pra criar uma, você precisa da seguinte estrutura:
Onde x é um nome arbitrário pra sua variável, “=” é um operador de atribuição e 3 é o valor que você quer guardar. Com esse comando, o Python vai criar uma caixinha e vai colocar um valor 3 dentro dela, depois disso ele vai colocar um rótulo na caixinha pra que a gente consiga achar ela depois. Esse rótulo é o x. Com isso, a gente diz que criou uma variável com o valor 3 dentro, e seu nome é x.
Depois, quando a gente quiser pegar o valor que a gente colocou dentro da caixinha, basta a gente usar o nome dela.
Tá, relaxa, vou te mostrar na prática. Olha esse código:
Ao executar esse programa, vai ser exibida a resposta, 3. Ou seja, as ordens que a gente deu foram: “Guarde o valor 3 na caixinha de nome x e depois exiba o valor dentro da caixinha de nome x “. Legal, né?!
O uso de variáveis é muito útil e você vai usar SEMPRE, em todos os seus programas.
Utilidade das variáveis
Imagina essa função matemática:
Pra gente achar o resultado dessa função em um ponto x na calculadora, teríamos que substituir o valor de x na fórmula, certo? Por exemplo, pra gente exibir o resultado de f(4) na tela, poderíamos fazer:
Olha como a gente poderia fazer aquela mesma função f(4) de antes usando variáveis.
Assim como antes, o ao executar esse programa, ele retorna 18. E pra você mudar o valor de x, basta você editar o valor da variável:
E o resultado agora vai ser 8 de novo, sendo que você só editou o valor da variável e o código dentro do print() continuou igualzinho, viu?!
Nomeando variáveis
Okay, eu usei x como nome de variável pra gente conversar sobre as utilidades dela, isso porque na matemática é muito comum a gente usar variáveis com uma só letra. Porém, isso não é legal... Olha esse código:
Consegue entender o que ele faz? Agora olha esse:
Esse é mais fácil, né? Eles fazem exatamente a mesma coisa, mas o segundo é muito mais fácil da gente entender. Se você fizer um monte de variável com qualquer nome, depois você e seu professor vão ter dificuldades pra entender o que o código faz. E ele vai ficar boladão!
Por isso, legibilidade é importante, beleza?? Existem algumas regras na hora de dar o nome das variáveis.
- Nomes de variáveis devem ser curtos e COM SIGNIFICADO. Se você não consegue saber o que tem dentro da variável só pelo nome, então não é um bom nome, cara!
- Não é possível usar espaços nos nomes, então é comum usar underscores, como um_nome_de_variavel.
- Os nomes das variáveis podem ter letras, números e underscores, mas não é possível começar o nome com um número. Por exemplo, minha_variavel_9 é um nome válido, mas 9x_variavel não é, pois começa com um número.
- Os nomes das variáveis, assim como todos os comandos de Python, são sensíveis ao Caps Lock. Isso significa que minha_variavel e minha_Variavel NÃO SÃO a mesma coisa, beleza?
Agora bora fazer uns exercícios pra ficar fera nessa parada?! Te espero lá! Valeuuu!
Utilidade das variáveis
Nomeando variáveis
Exercícios Resolvidos
Exercício Resolvido #1
Elaboração Própria
Joãozinho investiu R$1000,00 na sua conta do Banco Iradoso por um ano. Sabendo que seu investimento rende 0.02% por dia útil, qual o montante que Joãozinho terá após 7 semanas de investimento?
Passo 1
Fala aí! Antes de tudo eu queria te lembrar que, assim como todo exercício de programação, existe mais de uma solução correta, ok?! Se você fez diferente, não tem problema. O importante é funcionar e ser um bom algoritmo.
Sabendo disso, bora laaa resolver essa questão. A gente, primeiro, precisa definir uma série de instruções que, quando executadas de forma ordenada, resolvam o problema em questão. Nesse caso, as instruções são:
1.Calcular o número de dias úteis decorridos durante o investimento.
2.Calcular o rendimento no número de dias calculado no passo 1.
3.Exibir o montante calculado no passo 2.
No passo 1 o que a gente precisa fazer é multiplicar o número de dias úteis que uma semana tem pelo número de semanas decorridas, nesse caso, 5 dias úteis vezes 7 semanas resulta em 35 dias úteis no total. O código pra fazer isso fica assim:
Aqui a gente guardou a quantidade de dias úteis numa variável chamada “dias_uteis”.
Vamo pro próximo passo!
Passo 2
No segundo passo, a gente precisa calcular o rendimento. Lembrando lá da matemática, se nosso investimento rende 0.02% ao dia, isso significa que a cada dia a gente vai ter 100.02% do que a gente tinha no dia anterior.
Com isso, a gente precisa elevar o rendimento diário pelo número de dias e vamos ter o montante final. Se liga nesse código:
Obs: lembrar que o símbolo % significa “por cento”, que é a mesma coisa que dividir por 100?! Então... 100.02% é a mesma coisa que 100.02/100 = 1.0002. Se o montante vai ser multiplicado por esse valor a cada dia, então a gente pode elevar esse rendimento ao número de dias úteis.
Uma última observação é que números decimais só podem ser representados por “.”, ok? Se você colocasse uma vírgula ali, tipo “1,0002”, ia dar ruim!
Ok! Bora pro próximo passo.
Passo 3
No terceiro passo, a gente precisa mandar o computador exibir o resultado do cálculo feito no passo 2. Pra isso, vamos usar o comando print(). Esse comando exibe os dados que forem passados dentro dos parênteses. Lembra dele, né?!
Olha como a gente pode fazer:
Como sempre, é uma boa a gente testar nosso código pra ver se ta tudo funcionando na moral. Então vamo lá, executa o programa aí e vê se tá tudo certo!
O resultado aqui foi esse:
Caso o seu tenha dado o mesmo valor, isso significa QUE TU É BRAB@ MANOOO!
Valeuuuu! Te vejo no próximo!
Resposta
Exercício Resolvido #2
Elaboração própria
Você estudou pra sua prova de cálculo usando o Responde Aí e conseguiu terminar a prova em 1 hora e 34 minutos. Faça um programa que calcula e exibe o tempo decorrido, em segundos, durante a prova.
Passo 1
Cara, lembra que programar significa ensinar a um computador um passo a passo pra resolver um determinado problema? Então, sabendo disso, a primeira etapa no desenvolvimento de uma solução sempre é pensar em qual passo a passo resolve o seu problema.
Nesse caso, podemos dividir nossa solução nessas cinco etapas:
1. Armazenar os valores que a gente sabe em variáveis.
2. Calcular a quantidade de minutos que tem em uma hora
3. Calcular a quantidade segundos tem no total de minutos calculados
4. Exibir o resultado do passo 3.
Primeiro, vamos começar declarando variáveis dos valores que a gente já conhece pra que possamos usar durante nossos cálculos. Os dados fornecidos pelo enunciado foram as horas e os minutos. Com isso, a gente só precisa declarar essas duas variáveis.
Passo 2
No nosso resultado final a gente precisa ter o somatório de segundos que tem em cada minuto e em cada hora, certo? Show! Vamos criar a variável “minutos_totais” e colocar dentro dela quantos minutos a gente tem na variável “horas” e na variável “minutos”. Cada hora tem 60 minutos, certos?
Então se liga na ideia de como descobrir os minutos totais: a gente pode multiplicar o número de horas que a gente tem por 60 a gente vai ter o número de minutos!
Então bora escrever essa solução em Python!
Bom, até aqui a gente salvou na variável “minutos_totais” o tempo que tava salvo na variável “minutos” e “horas”. Agora a gente precisa adicionar o tempo correspondente a esse minutos, né?? Vamo lá!
Passo 3
Agora, também temos que adicionar em “segundos_totais” o tempo que ta salvo na variável “minutos_totais”. Mas, você sabe quantos segundos tem em um minuto?? Hmmm
Bom, um minuto costuma ter 60 segundos, certo? Show! Então, temos que adicionar esse tempo aos segundos que a gente já calculou. Com isso, vamos ter:
Agora sim! A gente acabou de colocar dentro da variável “segundos_totais” o número de segundos que a gente tinha colocado dentro da variável “minutos_totais”. Agora só falta a gente exibir esse número pro usuário, ok?
Passo 4
Agora que a gente já calculou os segundos totais, só falta a gente exibir esse valor pro usuário! Lembra do comando que a gente usa pra exibir coisas na tela??
Se tu for bom de memória, vai lembrar do comando print(). Esse comando exibe pro usuário o valor que a gente passa como parâmetro. Lembrando disso, basta a gente fazer:
O comando print() vai exibir os parâmetros que a gente passar um ao lado do outro. Ao executar esse programa, a gente vai obter o seguinte resultado:
Aí a gente matou a questão!!!
Valeu manoooo!
Resposta
Exercício Resolvido #3
UFF
Indique como verdadeiro ou falso:
Duas variáveis definidas como “teste” e “Teste” são consideradas como idênticas.
Passo 1
E aí, caraaa! Pô, nessa aqui a gente precisa lembrar que Python é sensível à caixa alta (case sensitive). Mas o que isso quer dizer?!
Mano, isso significa que letras maiúsculas e minúsculas são completamente diferentes aos olhos do Python.
A gente pode testar se você quiser! Se liga só:
A gente criou uma variável com o nomes dados pelo exercício e vamos testar se há algum problema durante sua execução.
Tá dizendo ali que ‘Teste’ não foi definido.... E, cara! Na verdade, não foi mesmo! Pois nós definimos ‘teste’, mas ‘Teste’ não!
Viu? Apesar de serem nomes bem parecidos, eles são completamente diferentes na hora de criar variáveis. Por isso costuma ser uma boa prática usar alguma padronização na hora de criar variáveis. Mas aposto que você já cria bons nomes pra suas variáveis, né?!
Em Python é muuuito comum usar o padrão snake_case, onde são criadas variáveis com todas as letras minúsculas e underscores (_).
Com isso, a gente prova que as variáveis com nome “teste” e “Teste” são DIFERENTES, ok?
Resposta
Falso! Essas variáveis não são consideradas iguais em Python.
Exercício Resolvido #4
Pense Python
Como você pode determinar o tipo de uma variável?
- Imprimindo o valor e determinando o tipo de baseado no valor exibido.
- Usando a função type().
- Usando o valor em uma equação conhecida e imprimindo o valor resultante.
- Olhando para a declaração da variável.
Passo 1
E aí, meu parceiro! A gente precisa marcar a alternativa que diz corretamente como a gente pode descobrir o tipo de uma variável! E como é múltipla escolha, vamos dar uma olhadinha em cada uma das alternativas, começando com a A.
Cara, essa alternativa ta dizendo pra gente usar a função print() na variável e, de acordo com o resultado, dizer qual é o tipo da variável. Mano... Pior que funciona! Mas nem sempre... Uma coisa é certa, com certeza não é a melhor opção! De qualquer forma, vou te mostrar o porquê de não ser uma boa opção. Olha aqui:
Criei duas variáveis e depois eu printei elas. A primeira é do tipo boolean e a segunda é uma string (texto). Vamos olhar o que acontece depois de executar:
Puts... Apesar dos tipos das variáveis serem diferentes, o resultado foi exatamente igual! Assim quebra a firma, viu?
Em alguns casos, dá pra gente deduzir o tipo printando, mas não é muito confiável, ok? Então essa aqui tá errada. Vamos olhar a alternativa B.
Passo 2
Beleza, a B tá falando que a melhor forma de descobrir o tipo da variável é usando a função type().
Ok, eu assumo, tá certo.
Cara, os computadores foram feitos justamente pra diminuir o trabalho manual, lembra? As melhores opções geralmente são automáticas de alguma forma. Computadores não costumam errar! Por isso, a gente pode ter total confiança no resultado da função type().
Vamos fazer o mesmo teste que a gente fez no item A:
Viu? Quando a gente só exibiu, na alternativa A, a gente não foi capaz de identificar a diferença. Mas usando a função type(), a diferença é explicitada! Repara que a gente usou o print() também, mas isso foi pra gente conseguir ver o resultado da função type(). Na alternativa A, a ideia era descobrir o tipo só de olhar, sacou?!
Mas calma! Vamos analisar a letra C pra procurar o que tem de errado nela...
Passo 3
Maninho, existem vários tipos de dados em Python! A probabilidade de você colocar uma variável numa equação matemática e dar erro é bem alta, e erros deixam a gente boladão!
Porque pô, se a letra A que era só printar o valor não dava certo, imagina vc colocar o valor numa equação e depois printar! Hahah com certeza vai dar errado. Vamos analisar a última alternativa!
Passo 4
Rapaz, nem sempre a gente tem acesso a isso! Imagina que você trabalha numa equipe e seu produto tem 250 mil linhas de código. COMO TU VAI ACHAR A VARIÁVEL??? Hahaha e mesmo que ache, isso não quer dizer que você vai saber o que tem dentro dela.
O método type() é o mais eficiente, beleza?! Valeuuu!
Resposta
Letra B. O método type() é o mais eficiente pra descobrir o tipo de uma variável.
Exercício Resolvido #5
PUC-Rio, adaptado
As idades das pessoas de um determinado grupo são 10, 12, 15 e 17 anos. Calcule e exiba a variação percentual da média das idades caso uma pessoa de 16 anos se junte ao grupo.
Passo 1
Fala aí, maluco! A gente queria só resolver um exercício de prog, mas sempre vem com alguma outra matéria junto.
Mas não se preocupe! Dessa vez, média e variação percentual são de boa. E, primeiramente, a gente precisa pensar num passo a passo. Vamos fazer assim:
- Calcular a média da primeira situação
- Calcular a média na segunda situação
- Calcular a variação percentual
- Exibir a variação
Vamo começar calculando a média na primeira situação. Pra isso, a gente precisa do somatório das idades.
Pronto! Já temos a primeira média! Vamos pra segunda agora.
Passo 2
Agora a gente precisa somar na variável idades a nova idade, 16, e depois calcular uma segunda média.
Tem algumas coisas pra gente debater sobre esse código. A primeira é o uso do operador +=.
Mas, relaxa! Esse operador tem o mesmo efeito de fazer “idades = idades + 16”.
Esses dois códigos têm exatamente o mesmo efeito. Mas só pra você saber que existem esses dois métodos, beleza? Vou te mostrar uma tabelinha desses operadores, chamados in-place.
Essa tabelinha mostra os principais operadores e suas versões in-place. Mas não precisa usar se não quiser, porque o resultado é exatamente o mesmo, ok?
Show! Vamos voltar ao nosso probleminha. Partiu passo 3.
Passo 3
Agora, a gente só precisa calcular a variação da média. Pra isso, vamos usar a função abs(). Essa função retorna pra gente o valor absoluto do número que a gente colocar dentro dos parênteses:
Com isso, a gente calcula o módulo (valor absoluto) da subtração media_1-media_2. Depois a gente divide pela média inicial. Esse valor é a variação percentual que o professor vacilão pediu.
Agora, a gente precisa exibir esse resultado pro usuário final!
Passo 4
Pra exibir qualquer coisa pro usuário, a gente precisa usar a famigerada função print(). Vamo lá!
Então beleza! Finalizamos nosso exercício!
Resposta
Exercício Resolvido #6
IF-MT – 2018, Adaptado
Considere o seguinte fragmento de código fonte, escrito em linguagem python:
Após a execução de todos os comandos, qual o resultado exibido?
Passo 1
Fala aí! Cara, esse código do enunciado parece meio doido!
Vamos analisar linha por linha o que tá acontecendo nesse programa, ok? Vamo lá, na primeira linha a gente tá criando uma variável chamada “a” e colocando dentro dela um valor numérico, 3.
É muuuito importante você lembrar que o nome da variável não faz parte da variável, ok?! Quando você cria uma variável, você pega um espacinho na memória do computador e salva um valor dentro desse espaço. O nome é só uma forma de você se referir àquele espaço que você criou, beleza?!
Repara que, na ilustração, o “a” não pertence a variável, só aponta pra ela!
Passo 2
Agora, a gente tá criando outra variável chamada “b”. Dentro dela a gente tá colocando o mesmo valor que tinha na variável “a” multiplicado por 2. Então, a memória do nosso programa tá parecida com isso:
Passo 3
Agora, na terceira linha, tem algo interessante acontecendo!
Vamos pensar sobre o uso das vírgulas ali antes de continuar.
Você não é limitado a declarar uma variável por linha. Você pode declarar quantas variáveis você quiser na mesma linha, usando vírgulas pra separar os valores.
Repara que os valores vão ser associados de forma respectiva, ou seja, o primeiro nome da esquerda com o primeiro valor da direita, o segundo com o segundo, etc...
Beleza! Agora vamos voltar ao nosso exercício.
Quando a gente faz “a, b = b,a”, a gente tá dizendo pro nome “a” referenciar o valor de” b” e o nome de “b” referenciar o valor de “a”. Em outras palavras, você tá trocando o nome de duas variáveis.
Uma forma de trocar o nome de duas variáveis sem o uso de vírgulas é usando uma variável temporária. Olha esse exemplo de como fazer a permutação usando variáveis temporárias:
Show! Bora analisar a última linha.
Passo 4
A última linha do código do enunciado tá mandando exibir o valor referenciado pela variável “a”. Vamo dar uma segunda olhada em como ficou a memória depois da gente fazer a troca dos nomes.
Repara que agora “b” aponta pra 3 e “a” aponta pra 6? Então! Isso significa que quando a gente executar esse programa, o comando print() vai exibir o que tá sendo referenciado pela variável “a”, que é 6. Por isso, a resposta é 6.
Te espero no próximo! Valeuu!
Resposta
6
Exercício Resolvido #7
RealPython, Adaptado
Após a execução do código abaixo, responda, justificando adequadamente, quantos objetos e quantas referências foram criadas na memória do computador.
Passo 1
Fala aí! Cara, esse exercício aqui obriga a gente a pensar sobre como funcionam as variáveis em Python por baixo do panos. Você lembra?!
Ah, deixa eu te lembrar: variáveis são espaços na memória que armazenam determinado objeto.
Esse objeto pode ser de qualquer tipo (como inteiro, float, boolean, etc). Depois que esse objeto é criado na memória, ele é referenciado pelo nome que a gente escolheu. Olha essa ilustração de como se parece uma variável na memória do computador:
Nessa ilustração, o círculo é nosso objeto. O retângulo com a seta é a nossa variável fazendo referência ao objeto. Quando a gente cria uma segunda referência com “m = n”, a gente tá criando uma nova referência, mas não um novo objeto.
As duas variáveis apontam pro mesmo valor na memória, ok?! Por isso, a resposta é que a gente tem duas referências, mas apenas um objeto.
Mas calma aí, deixa eu te falar sobre o que acontece quando a gente tenta mudar o valor de uma variável.
Repara que antes, “n” apontava pro objeto de valor 300. Quando a gente faz uma segunda atribuição, a gente NÃO edita o objeto anterior, ok?
O que acontece é que um novo objeto é criado e a sua variável passa a referenciar o novo objeto. Tô te contando isso porque é importante você saber que, diferente de outras linguagens, em Python os valores não são alterados.
Você simplesmente abandona o antigo e cria um novo. Se você fizer m referenciar 100 também, o que acontece é isso:
O objeto em laranja que foi criado primeiro, com 300 dentro, passa a não ser referenciado por ninguém, e por isso é automaticamente deletado pelo coletor de lixo do Python, ok?!
Por último, quero enfatizar m e n estão apontando pro mesmo objeto por causa do “m = n”, mas é possível ter mais de um objeto com valores idênticos, beleza?!
O resultado disso, na memória, é assim:
E, com essa análise, finalizamos mais um exercício!
Resposta
Um objeto e duas referências.
Exercício Resolvido #8
Elaboração Própria
Classifique o itens abaixo como nome de variável válido ou inválido.
- teclado_lidinho
- Germa66
- 1º_lugar
- PlayerID
- class
Passo 1
Fala aí! Não sei se tu lembra, mas na hora de criar uma variável a gente tem algumas restrições, infelizmente!
Esse exercício quer saber se a gente lembra dessas restrições. Vamo analisar uma por uma e mostrar que a gente domina essa parada de variáveis!
A primeira variável “teclado_lindinho” é válida! A gente pode usar letras minúsculas e também pode usar underscores, então tá sussa! Válido!
Passo 2
A segunda, “Germa66”, também funciona. Letras maiúsculas e números são aceitos de boa, ok?! Só não pode esquecer que uma variável não pode começar com um número, mas essa aqui começa com G, aí tá suave. Válido!
Passo 3
Agora a terceira vai dar ruim. “1º_lugar” começa com um número, cara! Se não fosse aquele 1 ali tava tudo certo (sim, o º funciona!). Esse não é um nome válido.
Passo 4
Na quarta, “PlayerID” não tem nada demais, mas não esquece que Python é sensível à caixa alta, beleza? O ruim de usar letras maiúsculas em Python é que se por acaso você criar uma variável “PlayerID” e depois escrever, por exemplo, “playerID” em algum outro lugar no seu programa, vai dar ruim!
Por isso, te recomendo sempre usar nomes de variável minúsculo, jae?! Essa também é válida!
Passo 5
Agora essa última é que causa treta. Cara, o nome obedece a todas as regras, mas não é um nome válido.
Isso porque Python já tem essa palavra reservada em um dos seus comandos internos. Ela não é a única, existem várias palavras reservadas que não podem ser nomes de variáveis. Olha algumas nessa listinha:
Mas ok, é muita coisa pra lembrar... Por isso, se liga no macetinho: se a palavra mudar de cor no seu editor de texto, não é uma boa ideia você criar uma variável com esse nome. Olha esses exemplos:
Se você criar uma variável com o nome de print, por exemplo, vai funcionar! Porém, você vai estar deletando esse comando e não vai mais conseguir usar. Então é melhor não fazer, ok?!
Resposta
V, V, I, V, I.