Conversão de tipos

Teoria Completa

Pra que converter tipos?

Fala aí, galera! Beleza? Hoje eu vim te contar que, em Python, as vezes não dá pra fazer as operações que a gente quer com os tipos de dados que a gente já tem. Lembra que quando a gente usa o operador de divisão (/) em números inteiros, os dados são automaticamente convertidos pra real (com um “.” no número)? Então! Isso acontece porque, geralmente, o resultado da sua divisão vai ser um número não inteiro, e aí Python faz essa conversão automática pra facilitar nossa vida.

Porém, tem casos onde a gente precisa fazer manualmente. Quer ver? Vem comigo! imagina que você quer fazer um programa que pergunta pro usuário um valor numérico, tipo assim:

Se tu executar esse programa, o resultado pode te surpreender! hahaha

Cara, quando o usuário digita a idade, a nossa variável chamada “idade” recebe esse valor digitado, porém, no formato de texto (string). Quando a gente tenta multiplicar por 3 na linha de baixo, o resultado é que o TEXTO é triplicado. Porém, não era isso que a gente esperava, né?

A gente esperava que fosse feita uma operação matemática. Pra fazer operações matemáticas a gente precisa que nossos dados sejam numéricos, e não texto, beleza?!

Nesse caso, como a idade da pessoa com certeza é um número inteiro, vamos converter esse valor pra inteiro.

Obs: a gente vai usar inteiro em vez de real, porque ninguém tem casas decimais na idade! hahaha

Viu?! Agora o resultado vai ser o que a gente espera! Uma operação matemática vai ser feita ali no print, e não uma triplicação de texto.

Repara que a função que a gente usou pra converter a saída da função input() pra inteiro é justamente o nome do tipo, int. Isso acontece em todos os tipos. Olha a tabelinha com ALGUMAS funções de conversão aqui embaixo:

Essa tabelinha mostra algumas das funções, mas não todas. Além disso, a gente ainda não viu todos os tipos que têm nessa tabelinha, mas vamos ver ainda. É importante tu notar que a lógica é a mesma, beleza?

Compatibilidade dos tipos

Também queria que você reparasse que não importa qual o tipo de dado que a gente coloca dentro dessas funções. Desde que seja compatível, vai funcionar! Quer ver? Olha:

A gente converteu o texto “45” pra inteiro (relembrando que tudo que estiver entre aspas é considerado como do tipo texto (string) pro python, beleza?). Aí gente converteu o texto “2” pra um número real e depois a gente converteu o resultado da multiplicação do inteiro 45 pelo real 2.0 pra texto de novo, e uniu com outro texto, “3.14”.

Olha o resultado doido que a gente vai obter depois de executar esse código:

Repara bem que o resultado é a junção de “90.0” com “3.14”.

Mas o que aconteceria se a gente tentasse converter uma palavra pra inteiro?!

Vamos tentar!

Nesse código a gente tá tentando converter um texto pra número inteiro, mas se você tentar executar, vai ver que vai dar erro! Isso é porque Python não sabe como representar “uma-palavra” como número (na verdade, a gente também não sabe hahah).

Então cuidado com isso, viu?

Conversão de string pra float

As suas conversões têm que ser compatíveis. Um dos principais erros que a gente encontra quando sua conversão de tipo é usando número real com vírgula. Olha esse exemplo:

O resultado disso é um erro! Esse código não vai funcionar, porque a gente tá tentando converter pra real um número com “,” (vírgula), mas cara, em os números decimais são representados por pontos “.”, beleza?! Você precisa usar ponto quando for digitar textos com números decimais.

A gente pode fazer várias coisas com as conversões de tipo, mas as principais que a gente vai estar sempre usando são as de números pra texto, com str(), e de texto pra números, com int() e float(), beleza?

Bora fazer exercício! Te espero lá!

Expandir

Exercício Resolvido #1

PUC-Rio

Escreva um programa que leia o primeiro termo de uma progressão aritmética (PA), sua razão(r) e um número inteiro n. Em seguida, calcule e exiba o n-ésimo termo (t) dessa PA.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Fala aí! Como primeiro passo, a gente precisa pedir os dados de entrada pro usuário. Nesse caso, a razão, o primeiro termo e o n. Sempre que a gente precisa pedir algo pro usuário, usamos a função input(), beleza?!

Mas tem um problema com esse código. Cara, sem que a gente chama a função input(), ele trás o que o usuário escrever em forma de texto (string). Mas acontece que aqui a gente quer que sejam números, porque a gente vai fazer conta com esses dados! Então precisamos converter os tipos.

Nas variáveis primeiro_termo e razao_pa, vamos converter pra números reais (float). Além disso, precisamos converter também o termo_n. Mas acontece que o termo vai ser um número inteiro (inclusive, tá escrito no enunciado). Então, vamos converter esse pra inteiro!

Beleza! Agora que a gente já tem os dados necessários, nos formatos certos, vamos botar a mão na massa e partir pra conta, no próximo passo.

Passo 2

Show, já temos os dados. Pra gente fazer a conta, vamos precisar da fórmula da PA. Pra nossa alegria, o enunciado deu a fórmula.

Então nossa tarefa é aplicar essa fórmula na próxima linha de código.

Pronto. Agora calculamos o termo e salvamos dentro da variável, de nome “termo”. Repara que a gente só precisou substituir os valores na fórmula. Aplicar fórmulas matemáticas em python costuma ser sempre assim.

Show! A gente só precisa exibir pro usuário o resultado, e faremos isso no passo 3!

Passo 3

Como já temos a resposta, só nos falta exibir pro usuário. Sempre que precisamos exibir algo pro usuário, usamos a função print(). E dessa vez não vai ser diferente.

Se liga que quando a gente usa o input(), a gente precisa se preocupar com o tipo de dado que a função retorna, e converter se for o caso. Mas quando usamos a função print(), não precisamos dessa preocupação, ok?! A função print() faz todas as conversões internamente, então é possível exibir números, textos, listas, etc, sem se preocupar com conversões.

Terminamos mais um exercício! Te espero no próximo, hein..

Resposta

Exercício Resolvido #2

UFF, Lista 1 - Adaptado

4) b) Escreva um programa que recebe três inteiros como entrada do teclado e escreva na tela a média, a soma, o produto, usando uma linha para cada resultado.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Fala aí! Precisamos fazer um programa que faz várias coisas com três números. Bom, o nosso primeiro passo é descobrir quais são esses três números inteiros. Vamos fazer isso perguntando pro usuário, usando a função input().

A ideia é essa, mas tem um probleminha nesse código. Lembra que a função input() SEMPRE retorna um texto?! Acontece que a gente precisa converter o resultado da função input() pra um tipo numérico. Nesse caso, como o enunciado diz que é um número inteiro, vamos converter pro tipo de números inteiros, que é o int. A gente pode fazer isso colocando a função input() dentro da função int().

Agora sim! Nós temos, guardados nas variáveis, todos os dados que precisamos pra continuar o desenvolvimento do nosso programa. Então, partiu segundo passo!

Passo 2

No segundo passo, vamos calcular a média, a soma e o produto dos três números.

Beleza, criamos três variáveis chamadas “soma”, “produto” e “media”, e já fizemos os cálculos necessários. Mas eu queria que você percebesse que a gente tá calculando a soma duas vezes. Repara que tanto na variável “soma” quanto na “media” a gente tem o código “numero_1+numero_2+numero_3”. Dessa forma, a gente tá mandando o computador fazer exatamente o mesmo cálculo duas vezes, o que não é legal! A gente tem que aproveitar as contas que já foram feitas sempre que possível, beleza?!

Olha, agora a gente só calculou a soma uma vez, e guardamos na variável “soma”. Quando a gente precisou fazer a mesma conta depois, simplesmente usamos o valor já calculado, que estava guardado dentro da variável “soma”, sacou?! Show!

Vamos ao próximo passo!

Passo 3

Agora a gente precisa exibir os três valores pro usuário, assim como manda o enunciado. Pra exibir coisas pro usuário, sempre podemos contar com a função print().

Como o enunciado manda exibir um por linha, vamos usar três vezes a função print()

E assim finalizamos mais um exercício!!! Te vejo no próximo, meu parceiro!

Resposta

Exercício Resolvido #3

UFU, Lista 1

Leia uma velocidade em km/h (quilômetros por hora) e apresente-a convertida em m/s (metros por segundo). A fórmula de conversão é: M = K/3.6, sendo K a velocidade em km/h e M em m/s.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

E aí, meu chegado! Vamos resolver mais uma questão juntinhos?!

Esse exercício fala pra gente ler uma velocidade em quilômetros por hora e exibir em metros por segundo. Bom, antes de tudo, precisamos descobrir qual velocidade a gente precisa converter. Vamos começar perguntando pro usuário!

Mas cê percebeu que falta alguma coisa neste código?! A função input() sempre retorna a entrada do usuário no formato de texto (string). Não tem como a gente fazer operações matemáticas se os dados estiverem no formato de string. Pra resolver isso, vamos usar conversão de tipos! Como a velocidade pode ser qualquer número real, vamos converter pra float (números reais em Python têm o nome de float).

Agora sim! O resultado guardado dentro da variável “velocidade” vai ser do tipo float, então vamos poder fazer contas de boa. Vamos pro segundo passo!

Passo 2

Agora que já sabemos a velocidade em km/h, a gente pode converter pra m/s. Por sorte, o enunciado já deu pra gente a fórmula.

Vamos aplicar ela na próxima linha de código:

Você deve ter sentido falta de uma nova variável. A verdade é que eu não vou usar o valor da velocidade antigo pra nada (em km/h). Daqui em diante, vamos usar só a nova velocidade (em m/s). Por isso, não há a necessidade de criar uma nova variável. A gente pode colocar o novo valor dentro da variável antiga! Depois deste código, a variável “velocidade” vai armazenar o valor da velocidade em m/s.

Show! Partiu fazer o próximo passo…

Passo 3

Agora a gente já tem a velocidade em m/s, então só falta a gente exibir pro usuário. Sempre que precisamos exibir algo pro usuário, usamos a nossa querida e amada função print().

Pronto! Agora o valor dentro da variável “velocidade” vai ser exibido depois de ser calculado. Ufa! Conseguimos!!

Vamos pro próximo exercício?! Te espero lá!

Resposta

Exercício Resolvido #4

Elaboração própria

Escreva um programa que leia um número inteiro e retorne o número multiplicado pela quantidade de dígitos.

Exemplo de entrada: 3141

Saída: 12564

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Fala aí, meu chegado! Esse exercício requer uma certa malandragem… Vamo tentar resolver!

Só depois que a gente tiver a entrada do usuário que a gente vai poder continuar o programa e fazer os cálculos. Então se liga, a primeira coisa que a gente tem que fazer é receber o input do usuário. Pra perguntar algo pro usuário a gente usa a função input(), taokey?