PyQuiz 16 - Conversión de tipos en Python | Quiz interactivo

PyQuiz 16 – Conversión de tipos en Python

El reto

a = int('5')
b = float('3.2')
resultado = a + b
print(type(resultado).__name__)

¿Cuál es el resultado?

  • a) 'int'
  • b) 'float'
  • c) 'str'

Piensa tu respuesta antes de seguir leyendo…


Concepto: Conversión de tipos

Python aplica promoción de tipos (type promotion) automáticamente cuando se operan números de distintos tipos. La regla es que el tipo menos preciso se convierte al más preciso para no perder información. En la jerarquía: intfloatcomplex.

Cuando sumas un int y un float, Python convierte el int a float internamente antes de hacer la suma, y el resultado es siempre float. Esto es un comportamiento implícito, sin que el programador lo pida.

Las funciones int() y float() convierten cadenas a números, pero no cambian el tipo del resultado de una operación entre ambos. La función type(x).__name__ devuelve el nombre del tipo como cadena, lo que resulta muy útil para depuración.

Paso a paso

  1. a = int('5') — la cadena '5' se convierte al entero 5. Tipo: int.
  2. b = float('3.2') — la cadena '3.2' se convierte al número en coma flotante 3.2. Tipo: float.
  3. resultado = a + b — Python suma int + float. El 5 se promueve a 5.0 implícitamente. El resultado es 8.2, de tipo float.
  4. print(type(resultado).__name__)type(8.2) devuelve <class 'float'>. El atributo .__name__ extrae solo la cadena 'float', que es lo que se imprime.

Solución

Respuesta correcta: B) 'float'

int + float = float. Python promueve el int a float automáticamente, así que type(resultado) es float.

Sabías que…

La promoción de tipos también ocurre con complex. Además, puedes usar isinstance() para comprobar tipos de forma más robusta que type(), porque respeta la herencia.

# Promoción a complex
resultado = 3 + 2j + 1.5  # float + complex -> complex
print(type(resultado).__name__)  # 'complex'

# isinstance vs type
x = True  # bool es subclase de int en Python
print(type(x) == int)       # False
print(isinstance(x, int))   # True  <- respeta la herencia

# División siempre devuelve float
print(type(10 / 2).__name__)  # 'float', aunque el resultado sea 5.0
print(type(10 // 2).__name__) # 'int', la división entera sí devuelve int

Prueba tú mismo

¿Qué tipo devuelve type(10 / 5).__name__? ¿Y type(10 // 5).__name__? Prueba a predecirlo antes de ejecutarlo.


Más PyQuizzes en elpythonista.com/pyquizzes

Tutorial relacionado: Tipos numéricos y booleanos

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Publicar un comentario