Converter entre tipos de dados

Concluído

Tip

Consulte a guia Texto e imagens para obter mais detalhes!

Quando aceita dados de um utilizador usando a input() função, o Python captura-os sempre como texto (uma cadeia)—mesmo que o utilizador escreva um número. Para usar esse valor em cálculos matemáticos, deve converter explicitamente (ou "cast") primeiro o seu tipo de dato.

Funções de conversão de tipo

O Python fornece funções incorporadas para transformar dados de um tipo para outro. Para lançar um valor, envolve-o na função de conversão desejada:

Function Convertidos a Exemplo Result
int() Número inteiro int("42") 42
float() Número decimal float("3.14") 3.14
str() Text str(100) "100"

Conversão da entrada do utilizador

Aqui estão os passos para converter a entrada do utilizador do texto para um número:

raw_input = input("Enter your score: ")  # Captured as text, e.g. "95"
score = float(raw_input)                 # Convert to a decimal number, e.g. 95.0
print(score + 5)                         # Math is now possible. Output: 100.0

Podes tentar correr este código tu próprio num interpretador Python online em https://aka.ms/python-coder.

Taquigrafia de uma linha

Podes combinar estes passos numa única linha de código. Quando encaixa a input() função dentro de uma função de conversão, o Python primeiro captura a entrada do utilizador como texto e depois converte-a imediatamente para o tipo desejado:

score = float(input("Enter your score: "))
  1. O Python executa primeiro a função interna: : input("Enter your score: ") para recolher o texto.
  2. Passa imediatamente esse texto para a função exterior: float()
  3. O número convertido é então atribuído à variável score.

O que acontece com valores incompatíveis?

Se tentar converter um valor que não pode ser interpretado como um número, o Python deixa de correr o seu programa e gera um ValueError:

user_age = int("hello") 

Output:

ValueError: invalid literal for int() with base 10: 'hello'

Também podes obter um se ValueError tentares converter um número decimal para um inteiro, porque o Python não consegue arredondar por ti:

user_age = int("3.14") # Pythoncan't drop the decimal for you

Se achar que um utilizador pode escrever um número decimal, use float() em vez de int() para evitar este erro. Floats podem ser convertidos em inteiros, mas Python arredonda sempre para baixo a parte decimal (por exemplo, int(3.99) torna-se 3).

Verificação do tipo de um valor

Pode verificar o tipo de dado de qualquer variável usando a função incorporada type() :

score = "95"
print(type(score))         # Output: <class 'str'>

score = float(score)
print(type(score))         # Output: <class 'float'>