Modulo 005 – Mais sobre variáveis

 – Mais sobre variáveis – Ordem de execução dos programas

No Python, a ordem das suas linhas de código impactam no resultado.
O que isso quer dizer? O Python sempre lerá o seu programa de cima para baixo.

 print(nome) 
 nome='joão' 
 -------------------------------------------  
 NameError               Traceback (most recent call last) 
 <ipython-input-1-f9edefc78603> in <module> 
 ----> 1 print(nome
       2 nome='joão' 
                         
 NameError: name 'nome'  is not defined 

Vamos dar uma olhada no exemplo ao lado. Consegue entender esse erro? Não? Tranquilo! A gente te explica! O erro, como você pode ver na última linha, se
refere à variável ‘nome’ que não está definida (not defined). Isso significa que o que está sendo executado não foi definido anteriormente.

Você deve estar se perguntando: 
“-Mas está definido sim! Nome= João!”
Sim, você tem razão sobre isso, mas vamos olhar mais uma vez a mensagem de erro. A seta indica que o erro ocorreu na linha 1 onde a variável nome é “impressa” pela função print. Com essa dica da mensagem de erro, fica mais simples de entender que na verdade o erro é a sequência do nosso código.
Imagine que você é o computador e não sabe o que virá na linha 2. Ao ler print(nome) que nome você “printaria”? Nenhum certo? Você ainda não tem essa informação.

Ok. Como corrigir?
Alterando a ordem do nosso código. Vamos dar uma olhada no exemplo ao lado já corrigido.

 nome='joão' 
 print(nome) 
___________
 João 

Vamos fazer o mesmo exercício. Leia como o computador leria... Variável nome recebe João. Imprimir o valor da variável nome 
Como nome = João
Resultado João
Portanto, sempre tenha atenção com a sequência do seu código!

Vamos ver um exemplo um parecido, mas envolvendo algumas operações matemáticas:

 faturamento = 100 
 custo = 80 
                
 lucro = (faturamento - custo) 
                     
 print (lucro) 
                  
 custo = 50 
                       
 print(lucro) 
_________
 20 
 20 

Apesar de termos “printado” duas vezes o lucro usando custos diferentes, o resultado foi o mesmo.
Em teoria teríamos
Faturamento(100) – Custo(80) = 20
Faturamento (100) – Custo(50) = 50
O erro no código, neste caso, ocorreu pois a variável lucro manteve o cálculo inicial realizado na linha 3 do nosso código. Mesmo fornecendo um novo custo, nesse caso 50, o cálculo do novo valor do lucro não foi realizado. Logo, a variável manteve seu valor original

Para resolver esse problema, temos como uma solução bem simples, o exemplo ao lado:
Inserindo uma nova linha para cálculo do lucro, podemos calcular o novo lucro considerando o novo custo fornecido.
Assim,
Lucro = Faturamento (100) – Custo (50)

– Tipos de variáveis

Até o momento, temos tratado as variáveis como iguais, mas na realidade, no Python cada variável possui um tipo. Para saber qual o tipo de uma variável, usamos a função Type() como nos exemplos ao lado.
• INT →  Números inteiros (sem casa decimal)
• FLOAT →  Basicamente são números com casas decimais. Lembrando que no Python a
casa decimal é representada pelo “.” (ponto) e não pela “,” (vírgula).
• STR →  Tipo string. Basicamente texto. Um ponto de atenção é que números entre aspas são considerados strings.
• BOOL →  Chamadas booleanas. São variáveis que só possuem 2 valores possíveis:
TRUE(Verdadeiro) ou FALSE(Falso)

Ou seja, todos os tipos de variáveis que vimos anteriormente possuem métodos específicos para cada um daqueles objetos.
Para descobrir quais são esses métodos podemos utilizar a função dir( TIPO DA VARIÁVEL) conforme a figura ao lado usando o tipo STR.

 dir(str) 

Não é necessário guardar ou decorar todos os métodos possíveis, mas é importante entender que esses métodos são ações que podem ser executadas nos objetos criados no programa.

– Misturando tipos de variáveis

Quando trabalhamos com variáveis de tipos distintos, podemos ter erros como nesse caso. Se analisarmos o erro, conseguimos entender que só é possível concatenar variáveis str com outras variáveis str.
No nosso código, estamos tentando concatenar o texto ‘ O faturamento da loja foi’ que é uma string com faturamento que é uma variável int, já que foi atribuído na linha anterior o valor 1000.

 faturamento = 1000 
 print('o faturamento da loja foi'+faturamento)
--------------------------------------
 TypeError: can only concatenate str (not "int") to str 

Para tratarmos esse erro e conseguirmos ter apenas variáveis tipo str na hora de concatenar, vamos usar a função str() como no print ao lado. Assim, o Python lerá o valor atribuído à variável faturamento e converterá esse valor em uma string. 
Uma dúvida comum é:
“Mas essa conversão é pontual ou é definitiva?” Vamos dar uma olhada no type da variável faturamento nesse segundo print:

 faturamento = 1000 
 print('o faturamento da loja foi ' + str(faturamento)
____________
 O faturamento da loja foi 1000 


 type(faturamento) 
______________
 int 

Perceba que apesar de termos convertido a variável faturamento, a mesma não foi alterada em definitivo, apenas na linha onde foi feita a conversão.

Outra forma de trabalharmos com mais de um tipo de variável é o método .format. Esse método, além de mais usual, é mais simples pois não é necessário especificar para qual tipo de variável será alterada.
Vamos entender como funciona com o primeiro exemplo:

 faturamento = 1000 
 custo = 500 
                              
 print('O faturamento da loja foi {}'.format(faturamento)) 
____________________
 O faturamento da loja foi 1000 

Perceba que ao invés de usarmos str(faturamento) como no exemplo anterior, nós usamos apenas duas chaves {} e ao fim do texto usamos o método .format(faturamento).
O python ao ler as chaves {} entenderá que o valor de uma varíavel precisa ser incluída ali. O Python buscará esse valor dentro dos argumentos do método format. Nesse caso, faturamento.

Mas se ao invés de uma variável forem mais variáveis? Vamos olhar o exemplo 2:

 faturamento = 1000 
 custo = 500 
                              
 print('O faturamento da loja foi {} e o custo {}'.format(faturamento)) 
____________________
 O faturamento da loja foi 1000 e o custo 500 

Nesse caso temos dois sinais “{}” , o que significa que serão necessários 2 valores. Olhando os valores dentro do .format, podemos ver que as variáveis faturamento e custo são esses valores.

A Ordem faz diferença?
SIM! Vamos dar uma olhada no último caso: Aqui, ao invés de format(faturamento,custo),
invertemos a ordem dessas variáveis. Logo format(custo,faturamento). Perceba no output que os valores estão invertidos. Portanto atenção, pois a ordem faz diferença!

Nenhum comentário:

Postar um comentário