Enviar um café pro programador

Como transformar strings em números em Python - Funções int() e float()

No próximo tutorial de Python, vamos começar a trabalhar com Matemática, fazer operações e até criar uma calculadora bem bacana e simples, toda feita com o que estudamos até o momento.

Mas antes de falarmos disso, precisamos resolver um problema com nossa função input que recebe dados do teclado do usuário.

Leia também:

Eu quero obter certificado Python Progressivo e Entrar no Mercado de Trabalho!



Função input() e retorno em string

Quando digitamos qualquer coisa no teclado para a input capturar, ela automaticamente vai transformar esse dado em uma string (um texto).

Atenção: Isso na versão mais nova do Python, a 3.x (3.4, 3.6 ...etc).
ATUALIZE SEU PYTHON PRA VERSÃO MAIS NOVA, OK?

Vamos usar o seguinte script que pede três dados do usuário e em seguida exibe o tipo de variável através da função type().

Nosso script:
string=input("Digite uma string: ")
print( type(string) )

inteiro=input("Digite um inteiro: ")
print( type(inteiro) )

decimal=input("Digite um float: ")
print( type(decimal) )


Agora vamos rodar e digitar uma string, depois um inteiro e depois um float (decimal), veja o resultado:

String para float

Veja que nos três casos, as variáveis são do tipo string ('str').
Mas, peraí Python!

Eu queria que só a primeira fosse string!
2112 queria que fosse um inteiro
21.12 queria que fosse um decimal (float)

Por que isso acontece? Deu bug no Python? Quebrei o Python?

Não, caro paladino das artes computacionais.
Isso é uma característica da função input() no Python 3.x

Dizemos que a função input retorna uma string.
Ou seja, ao utilizarmos ela, ela vai colocar uma string na variável, não importa o que você tenha digitado, ok?

Mas vamos aprender como transformar essas strings indesejadas em números do tipo que quisermos!



Função int() - String para Inteiro (str to int) em Python

Para transformar uma string em inteiro, vamos usar a função int()
Basta colocarmos o que quisermos entre os parêntesis dessa int(), que ela retorna um inteiro.

No caso, vamos colocar uma string, ok?

Exemplos:
Vamos definir uma variável chamada var1 e colocar a string '2112' dentro dela.
Em seguida, vamos usar a função type() para exibir o tipo de dado (vai aparecer 'str' de string).

Em seguida, vamos pegar outra variável var2 e fazer ela receber a função int() e dentro dessa int, colocamos a string var1. Depois imprimimos o tipo de dado que é a var2, veja:
var1='2112'
print( type(var1) )

var2 = int(var1)
print( type(var2) )


O resultado é exatamente o que esperamos:

Apostila de Python online grátis para download


Transformamos a string '2112' no número 2112 !




Função float() - String para Decimal (str to float) em Python

Exatamente como funciona a int(), funciona a float().
Tudo que colocarmos entre os parêntesis dessa função, ela vai transformar em float.

Vamos criar um script que pede um decimal para o usuário e armazena na variável var1. Depois, imprimimos o tipo de dado dessa var1, que vai ser 'str'.

Depois, colocamos essa var1 dentro da função float() e armazenamos o valor em uma variável var2. Em seguida, imprimimos o tipo de dado dessa variável, que vai ser 'float'.

Agora, vamos pegar uma variável var3 e colocar um inteiro nela, o número 2112, que é o número mais foda de todos.

Depois transformamos esse inteiro em um float, armazenamos ele em var4 e vemos o tipo de dado da var4, que agora agora é float, veja:

var1=input("Digite um decimal: ")
print( type(var1) )

var2=float(var1)
print( type(var2) )

var3=2112
var4=float(var3)

print( type(var4) )

print(var4)

O resultado foi esse:

Curso de Python online grátis


Xablau! Transformamos uma string em float, e depois o inteiro 2112 em um float. Imprimimos até var4 para vermos que 2112 se transformou em 2112.0 , um decimal!

Usando int() e float() na função input()

Ok, mas e o nosso problema inicial? De querer um número e o diacho da função input me dar uma string, como resolver?

Muito simples. Lembra que dissemos que a input retorna uma string?
Então é só jogar a função input dentro das funções int() e float()

Ou seja, para pegar um dado do usuário, transformar em inteiro e armazenar na variável var1, faça:

var1 = int( input("Digite um inteiro: ") )

E para pegar o dado do usuário e transformar em decimal, basta jogar a input dentro da função float:

var2 = float( input("Digite um decimal: ") )


E prontinho! var1 é um tipo de dado inteiro e var2 é um tipo de dado float.
Simples, não?

8 comentários:

  1. QUE CURSO FODA PORRA!!!!!

    ResponderExcluir
  2. Sensacional, só tenho a agradecer. acompanho vários tutoriais desse site, e aprendo muito com todos eles!

    ResponderExcluir
  3. Muito top! Vídeos não explicam essa leitura da bagaça toda!

    ResponderExcluir
  4. Incrível como esse tutorial é bem explicado e divertido de acompanhar, parabéns!!!!

    ResponderExcluir
  5. Simples e objetivo! Parabéns!

    ResponderExcluir