Conversões de Tipos em Python
Nas operações com dados, podem ser usados valores de diferentes tipos. Por exemplo, podemos somar um número do tipo int
e outro do tipo float
:
a = 2 # número int
b = 2.5 # número float
c = a + b
print(c) # 4.5
Nesse caso, nenhum erro ocorrerá. Entretanto, o Python nem sempre consegue realizar automaticamente operações envolvendo dados de diferentes tipos. Vamos entender quais são as regras que se aplicam nesses casos.
Conversão Implícita
Em operações aritméticas, ambos os números precisam ser do mesmo tipo. Quando os dois operandos têm tipos diferentes, o Python tenta convertê-los automaticamente, seguindo as seguintes regras:
- Se um dos operandos for um número complexo (
complex
), o outro será convertido paracomplex
. - Caso contrário, se um dos operandos for do tipo
float
, o outro será convertido parafloat
. Isso é o que ocorreu no exemplo anterior, onde o valor da variável a foi convertido parafloat
. - Se nenhum dos operandos for
complex
oufloat
, ambos deverão ser do tipoint
, e nenhuma conversão será necessária.
Conversão Explícita
Em algumas situações, é necessário realizar a conversão de tipos manualmente. Por exemplo, considere o seguinte código:
a = "2"
b = 3
c = a + b
Esperamos que "2" + 3 resulte em 5. No entanto, esse código lança um erro, pois o primeiro valor é uma string. Ao executar o código, o seguinte erro será exibido:
TypeError: can only concatenate str (not "int") to str
Para realizar a conversão de tipos, o Python fornece algumas funções embutidas:
int()
: converte o valor para um número inteiro.float()
: converte o valor para um número com ponto flutuante.str()
: converte o valor para uma string.
int()
No exemplo anterior, podemos converter a string para um número usando a função int()
:
a = "2"
b = 3
c = int(a) + b
print(c) # 5
Outros exemplos de conversão com int()
:
a = int(15) # a = 15
b = int(3.7) # b = 3
c = int("4") # c = 4
e = int(False) # e = 0
f = int(True) # f = 1
Se o valor não puder ser convertido, a função int()
lançará um erro ValueError
:
b = int("a1c") # Erro
c = int("4.7") # Erro
float()
De maneira semelhante, a função float()
converte valores para números com ponto flutuante:
a = "2.7"
b = 3
c = float(a) + b
print(c) # 5.7
Outros exemplos de conversão com float()
:
a = float(15) # a = 15.0
b = float(3.7) # b = 3.7
c = float("4.7") # c = 4.7
d = float("5") # d = 5.0
e = float(False) # e = 0.0
f = float(True) # f = 1.0
Assim como em int()
, nem todos os valores podem ser convertidos para float
. Por exemplo:
d = float("abc") # Erro
str()
A função str()
converte um valor para string:
a = str(False) # a = "False"
b = str(True) # b = "True"
c = str(5) # c = "5"
d = str(5.7) # d = "5.7"
A função str()
pode ser útil, por exemplo, ao concatenar um valor de outro tipo com uma string. No exemplo abaixo, uma tentativa de concatenar uma string com um número lança um erro:
age = 22
message = "Idade: " + age # Erro
print(message)
Quando somamos um número com outro número, temos uma operação aritmética. Já ao somar uma string com outra string, realizamos uma concatenação. Mas o Python não sabe como combinar uma string e um número diretamente. Para isso, podemos usar a função str()
:
age = 22
message = "Idade: " + str(age) # Idade: 22
print(message)