Conversión de Tipos con str(), int() y float()

Si quiere concatenar un entero como 29 con una cadena para pasarla a print(), necesitará obtener el valor '29', que es la forma de cadena del entero 29. A la función str() se le puede pasar un valor entero y se evaluará a una versión de valor de cadena del entero, como sigue:

>>> str(29)
'29'
>>>print('Tengo ' + str(29) + ' años.')
Tengo 29 años.

Como str(29) equivale a '29', la expresión 'Tengo ' + str(29) + ' años.' equivale a 'Tengo ' + '29' + ' años.', que a su vez equivale a 'Tengo 29 años.'. Este es el valor que se pasa a la función print().

Las funciones str(), int() y float() se evaluarán a las formas de cadena, entero y punto flotante del valor que se pase, respectivamente. Intente convertir algunos valores en el shell interactivo con estas funciones y observe lo que sucede.

>>> str(0)
'0'
>>> str(-3.14)
'-3.14'
>>> int('42')
42
>>> int('-99')
-99
>>> int(1.25)
1
>>> int(1.99)
1
>>> float('3.14')
3.14
>>> float(10)
10.0

Los ejemplos anteriores llaman a las funciones str(), int() y float() y les pasan valores de los otros tipos de datos para obtener una cadena, un entero o una forma de punto flotante de esos valores.

La función str() es útil cuando se tiene un entero o un flotante que se quiere concatenar en una cadena. La función int() también es útil si tiene un número como valor de cadena que desea utilizar en algunas matemáticas. Por ejemplo, la función input() siempre devuelve una cadena, incluso si el usuario introduce un número. Introduzca spam = input() en el shell interactivo y escriba 101 cuando espere su texto.

>>> spam = input()
101
>>> spam
'101'

El valor almacenado dentro de spam no es el entero 101 sino la cadena '101'. Si quieres hacer cálculos con el valor de spam, utiliza la función int() para obtener la forma entera de spam y luego guárdala como el nuevo valor de spam.

>>> spam = int(spam)
>>> spam
101

Ahora deberías ser capaz de tratar la variable spam como un entero en lugar de una cadena.

>>> spam * 10 / 5
202.0

Tenga en cuenta que si pasa un valor a int() que no puede evaluar como un entero, Python mostrará un mensaje de error.

>>> int('99.99')
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    int('99.99')
ValueError: invalid literal for int() with base 10: '99.99'
>>> int('twelve')
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    int('twelve')
ValueError: invalid literal for int() with base 10: 'twelve'

La función int() también es útil si necesitas redondear un número de punto flotante hacia abajo.

>>> int(7.7)
7
>>> int(7.7) + 1
8

Has utilizado las funciones int() y str() en las últimas líneas de tu programa para obtener un valor del tipo de datos apropiado para el código.

print('¿Cuál es tu edad?') # pregunta por su edad
miEdad = input()
print('Tendrás ' + str(int(miEdad) + 1) + ' dentro de un año.')

EQUIVALENCIA ENTRE TEXTO Y NÚMERO

Aunque el valor de la cadena de un número se considera un valor completamente diferente de la versión de punto flotante o entero, un entero puede ser igual a un punto flotante.

>>> 42 == '42'
False
>>> 42 == 42.0
True
>>> 42.0 == 0042.000
True

Python hace esta distinción porque las cadenas son texto, mientras que los enteros y los flotantes son números.


La variable miEdad contiene el valor devuelto por input(). Dado que la función input() siempre devuelve una cadena (incluso si el usuario introdujo un número), puede utilizar el código int(miEdad) para devolver un valor entero de la cadena en miEdad. Este valor entero se suma a 1 en la expresión int(miEdad) + 1.

El resultado de esta suma se pasa a la función str(): str(int(miEdad) + 1). El valor de la cadena devuelta se concatena con las cadenas 'Tendrás ' y ' dentro de un año.' para evaluar un valor de cadena grande. Esta cadena grande es finalmente pasada a print() para ser mostrada en la pantalla.

Digamos que el usuario introduce la cadena '4' para miEdad. La cadena '4' se convierte en un entero, por lo que se le puede sumar uno. El resultado es 5. La función str() convierte el resultado de nuevo en una cadena, por lo que puede concatenarla con la segunda cadena, ' dentro de un año.', para crear el mensaje final. Estos pasos de evaluación se parecerían a los siguientes:

Deja una respuesta