Converter entre tipos de dados
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: "))
- O Python executa primeiro a função interna: :
input("Enter your score: ")para recolher o texto. - Passa imediatamente esse texto para a função exterior:
float() - 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'>