Olá, agora que a gente já aprendeu a construir expressões aritméticas, a fazer comparações e lidar com variáveis Python, vamos aprender agora pouco mais sobre valores e tipos de valores. Então, vamos abrir o nosso interpretador idle e quando a gente digita algo do tipo dez, dez é número, mas eu posso perguntar para o Python qual é o tipo desse valor, se eu der aqui type dez, ele vai dizer que dez é valor da classe int, da classe dos números inteiros. É conjunto, uma classe de valores que são os números inteiros, então o dez é número inteiro. Posso perguntar qual é o tipo. Vou colocar uma frase: tudo bem? Qual é o tipo de 'tudo bem?'? 'Tudo bem 'é algo da classe string, esse str significa string. Eu posso ter objetos do tipo inteiro, são da classe int, objetos do tipo string, que são dessa classe str. Particular, se eu fizer cinco dividido por dois, dá dois e meio, 2.5, então qual que é o tipo de cinco dividido por dois? O tipo de cinco dividido por dois é float, a classe float, essa palavra float vem de floating point, ponto flutuante, que é uma representação interna que o computador usa para representar esses números fracionários onde tem casas depois da vírgula. O número 2.5 é número fracionário, a gente diz que ele é número do tipo float. Uma coisa interessante, já que estamos falando de números ponto flutuante é que às vezes a gente quer fazer uma divisão Python dando resultado fracionário, por exemplo dez dividido por três, que dá uma dízima periódica e note que nesse caso é uma dízima periódica mas ela não tem infinitas casas decimais. Os números nos computadores modernos têm uma precisão limitada, eles não têm precisão infinita porque a memória do computador é finita e a gente usa alguns número de bytes finitos para representar os número. Aqui, a gente vê, tem muitas casas decimais, mas tem certo limite, particular a última casa decimal está com valor errado aqui porque é erro de arredondamento, erro de cálculo que é comum dar na última casa decimal, ou nas últimas casas decimais. Mas isso é número do tipo float, mas alguns casos a gente quer fazer a divisão inteira, a gente quer saber qual o resultado da divisão inteira e qual o resto da divisão. Python a gente pode fazer isso usando o operador: //, então dez // três, então a divisão inteira de dez por três é três, eu quero saber qual o resto da divisão, o resto da divisão a gente usa o operador porcento, dez porcento três, na verdade vai dizer qual é na verdade o resto da divisão de dez por três, e o resto da divisão é porque dez dividido por três dá três e sobra. Nós temos também essa opção ao fazer divisões de usar ou uma divisão que o resultado é do tipo float, número ponto flutuante, fracionário, ou o resultado é número inteiro, número da classe int. Que é que podemos fazer dado que temos esses pontos ponto flutuante? Por exemplo, posso ter variáveis que guardam valores ponto flutuante. Então, posso dizer que o peso de uma pessoa é 78 e se a altura dessa pessoa é 1.83, note, tem uma variável que guarda valor inteiro e outra variável, essa variável é altura, ela guarda número da classe float, o valor desse número é 1.83. Agora eu posso fazer uma conta, por exemplo, o IMC, índice de massa corporal desta pessoa vai ser o peso dividido pela altura ao quadrado. O IMC agora também é uma variável ponto flutuante, fracionário, essa pessoa tem IMC de 23.29, ela está bem aí. Uma coisa que a gente pode fazer é a conversão entre tipos. Se a gente tem uma variável IMC, tem valor fracionário, do tipo float, por algum motivo não quero ter as casas depois da vírgula, quero só ter esse valor como número inteiro, por exemplo, para consultar numa tabela. Sabe o que posso fazer? Posso guardar numa outra variável IMC inteiro, eu vou fazer o seguinte, quero converter esse valor float para valor inteiro, int. Como que faço isso? Escrevo int e depois, entre parêntesis, o valor que quero converter. Então, se eu fizer isso aqui: IMC inteiro recebe int IMC, ele vai converter para valor inteiro o IMC e guardar na variável IMC inteiro. Então, qual é o valor do IMC inteiro? É 23, particular, ele trunca, ele joga fora o que tem depois da vírgula independente do que tem lá, ele joga fora e pega só a parte inteira. Eu poderia fazer outros tipos de conversão. Por exemplo, tem coisas que são do tipo string, nós já vimos. Então, posso ter uma variável aqui, texto, que recebe string: bom dia, tudo bem? Texto aqui vale: bom dia, tudo bem? Com texto tem certas coisas que eu posso fazer, por exemplo, posso perguntar qual o comprimento desse texto. Existe uma função aqui Python chamada len, de length, inglês comprimento, que se eu perguntar qual é o length, comprimento, do texto, ele vai me dizer: esse texto tem 18 caracteres. Se eu perguntar qual é o comprimento do IMC. Deu uma mensagem de erro, ele falou: o objeto do tipo float, ele não tem essa função chamada len aqui, não dá para saber qual é o comprimento de número do tipo float. Mas lembra que eu falei que posso fazer conversão de tipos. Então, eu poderia perguntar qual é o comprimento e daí pegar o IMC e converter para tipo string. Como eu posso fazer isso? Vamos guardar numa variável temporária. Uma variável temporária recebe, quero que se converta para o tipo string o meu texto. Fazendo isso, essa variável temp, não, eu me confundi, na verdade não é o texto. A gente quer fazer na variável temp, eu quero converter para o tipo string, não faria sentido porque o texto já é string. Então, o que a gente quer converter? O IMC, então, converter para string o IMC e daí, qual o valor? Note que, agora tem aquele mesmo valor só que está entre apóstrofes, e as apóstrofes é para indicar que isso é string, então, isso não é mais valor numérico, é uma sequência de caracteres: o caractere dois, o caractere três, o caractere ponto. E daí, como é uma string, agora eu posso perguntar qual é o comprimento desse string temporário. E esse comprimento é 18. Na verdade, podia fazer as duas operações encadeadas, por exemplo, poderia perguntar qual o comprimento do IMC convertido para string. Como eu faço isso? Converte para string, o IMC. Note, eu estou colocando uma função dentro da outra e daí também dá 18, não preciso dessa variável temporária. Então, você vê que nós podemos, então, fazer conversão entre tipos diferentes, nós já vimos pelo menos três tipos: tipo inteiro, tipo float para números fracionários e tipo string e a gente pode passar as coisas de tipo para outro. Então, eu queria que vocês entrassem no interpretador e brinquem pouco com esses vários tipos de variáveis e fazendo conversões entre os tipos. [MÚSICA] [MÚSICA] [MÚSICA]