Converter entre tipos de dados
Tip
Consulte a guia Texto e imagens para obter mais detalhes!
Quando você aceita dados de um usuário usando a input() função, Python sempre os captura como texto (uma cadeia de caracteres)— mesmo que o usuário digite um número. Para usar esse valor em cálculos matemáticos, você deve converter explicitamente (ou "converter") seu tipo de dados primeiro.
Funções de conversão de tipo
Python fornece funções internas para transformar dados de um tipo para outro. Para converter um valor, você o encapsula na função de conversão desejada:
| Função | Converte em | Example | Result |
|---|---|---|---|
int() |
Número inteiro | int("42") |
42 |
float() |
Número decimal | float("3.14") |
3.14 |
str() |
Texto | str(100) |
"100" |
Convertendo entrada do usuário
Estas são as etapas para converter a entrada do usuário do texto em 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
Você pode tentar executar esse código por conta própria em um interpretador de python online em https://aka.ms/python-coder.
Taquigrafia de uma linha
Você pode combinar essas etapas em uma única linha de código. Quando você aninha a input() função dentro de uma função de conversão, Python primeiro captura a entrada do usuário como texto e, em seguida, a converte imediatamente no tipo desejado:
score = float(input("Enter your score: "))
- Python executa a função interna primeiro: para
input("Enter your score: ")capturar o texto. - Ele passa imediatamente esse texto para a função externa:
float() - O número convertido é atribuído à variável
score.
O que acontece com valores incompatíveis?
Se você tentar converter um valor que não pode ser interpretado como um número, Python interromperá a execução do programa e gerará umValueError:
user_age = int("hello")
Output:
ValueError: invalid literal for int() with base 10: 'hello'
Você também pode obter um ValueError se tentar converter um número decimal em um inteiro, porque Python não pode arredondar para você:
user_age = int("3.14") # Pythoncan't drop the decimal for you
Se você acha que um usuário pode digitar um número decimal, use float() em vez de int() evitar esse erro. Os floats podem ser convertidos em inteiros, mas Python sempre arredonda para baixo a parte decimal (por exemplo, int(3.99) torna-se3).
Verificando o tipo de um valor
Você pode verificar o tipo de dados de qualquer variável usando a função interna type() :
score = "95"
print(type(score)) # Output: <class 'str'>
score = float(score)
print(type(score)) # Output: <class 'float'>