Conversões de Tipos - Python
Nas operações com dados, podem ser usados valores de diferentes tipos. Por exemplo, podemos somar um número do tipo int
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 (
), o outro será convertido paracomplex
.complex
Caso contrário, se um dos operandos for do tipo
, o outro será convertido parafloat
. Isso é o que ocorreu no exemplo anterior, onde o valor da variável a foi convertido parafloat
.float
Se nenhum dos operandos for
oucomplex
, ambos deverão ser do tipofloat
, e nenhuma conversão será necessária.int
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:
: converte o valor para um número inteiro.int()
: converte o valor para um número com ponto flutuante.float()
: converte o valor para uma string.str()
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()
ValueError
b = int("a1c") # Erro
c = int("4.7") # Erro
float()
De maneira semelhante, a função float()
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()
float
d = float("abc") # Erro
str()
A função str()
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)