Conversiones¶
Hay veces que tenemos un tipo de dato y lo necesitamos de otro tipo. Tendremos que hacer una conversión, generando un nuevo dato a partir del original.
Conversiones automáticas¶
Si, en una operación aritmética, los dos operandos son del mismo tipo, el resultado será de dicho tipo:
>>> type(1.0)
<class 'float'>
>>> type(1.0 + 1.0)
<class 'float'>
>>> type(1+1)
<class 'int'>
Si un operando es int y el otro float, el primero se convierte internamente
a float antes de realizar la operación, y el resultado es float:
>>> 1+1.0
2.0
El resultado de una división siempre es float aunque ambos operandos sean int
>>> 10/2
5.0
Conversiones manuales¶
Un dato tipo str no se puede concatenar con uno numérico:
>>> "Hola"+"17"
'Hola17'
>>> "Hola"+17
Traceback (most recent call last):
File "/usr/lib/python3.13/idlelib/run.py", line 590, in runcode
exec(code, self.locals)
~~~~^^^^^^^^^^^^^^^^^^^
File "<pyshell#11>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
Tendremos que convertir el valor numérico en texto. La función str() admite
valores de cualquier tipo, y devuelve un string:
>>> "Hola"+str(17)
'Hola17'
De igual forma, la función int() devuelve un número entero a partir de un texto
o cualquier otro valor numérico. Por su parte, float() devuelve un valor con
decimales a partir de un entero o de un texto:
>>> int(17.5)
17
>>> int("17")
17
>>> float("17.5")
17.5
Un ejemplo¶
Vamos a crear una calculadora:
| Sumadora.py | |
|---|---|
1 2 3 4 5 | |
Lo que al ejecutarse muestra algo así como:
Número 1: 27
Número 2: 12.5
Suma = 39.5
Lo que introduce el usuario es un dato del tipo str. Con la función float,
obtenemos el valor numérico correspondiente y se lo asignamos a la propia
variable, perdiéndose el texto original.
Las variables pueden cambiar de tipo¶
En el ejemplo anterior, vemos que al asignar un dato a una variable:
numero1 = float(numero1)
... no solo se pierde el dato original, sino que el nuevo puede ser de un tipo diferente.
En otros lenguajes de programación, esto se considera un herejía. Las variables pueden cambiar de valor a lo largo de la ejecución del programa, pero no pueden cambiar de tipo. Python lo permite.
Nota para quienes tengan experiencia en otros lenguajes
¿Como es posible redefinir una variable para que cambie de tipo? Se debe a que las variables Python son en realidad punteros. Si escribimos:
x = 0
x = "0"
lo que almacena la variable x es la dirección de memoria del objeto asignado. Los objetos que dejan de estar apuntados por ninguna variable, serán suprimidos por el recolector de basura de Python.