Tipos de Datos en Python

1. Datos Primitivos

Python utiliza un sistema de tipos dinámico y de alto nivel, lo que significa que el tipo de una variable se define en tiempo de ejecución y es manejado automáticamente. A continuación te detallo los tipos de datos primitivos y sus características.

Numéricos

Python admite tres tipos numéricos principales: enteros, flotantes y complejos.

Enteros (int)

Descripción: Los enteros representan números sin decimales. A diferencia de otros lenguajes, Python permite enteros de precisión arbitraria, es decir, pueden ocupar tantos bits como la memoria permita.

Versión disponible: Desde Python 2 (aunque en Python 3 se unificaron int y long).

Tamaño en bits: La precisión es arbitraria, por lo que depende del valor.

Salida:

Factorial de 50: 30414093201713378043612608166064768844377641568960512000000000000

Flotantes (float)

Descripción: Los números flotantes o de punto flotante representan números con decimales, siguiendo el estándar IEEE 754 de 64 bits (precisión doble).

Versión disponible: Desde Python 2.

Tamaño en bits: 64 bits.

Salida:

Raíz cúbica de 27: 3.0

Complejos (complex)

Descripción: Los números complejos incluyen una parte real y una imaginaria. En Python se representan como a + bj, donde j indica la parte imaginaria.

Versión disponible: Desde Python 2.

Tamaño en bits: 128 bits (64 para la parte real y 64 para la imaginaria).

Salida:

Resultado de la operación compleja: (4+5j)

Cadenas de Texto (str)

Las cadenas de texto en Python son inmutables y representan secuencias de caracteres. Python 3 utiliza Unicode para admitir caracteres especiales y multilingües.

Versión disponible: str está disponible desde Python 2, pero en Python 3 se implementó Unicode por defecto.

Tamaño en bits: Depende de la codificación, pero cada carácter Unicode ocupa generalmente 8, 16 o 32 bits.

Salida:

Somos SENATI
Mensaje repetido:  Python Python Python

Booleanos (bool)

Los valores booleanos solo pueden ser True o False.

Versión disponible: Introducido en Python 2.3.

Tamaño en bits: Generalmente 8 bits (1 byte).

Salida:

Resultado lógico: True

2. Operadores

Operadores Aritméticos

Ejemplo:

Salida:

Área: 78.53981633974483
Perímetro: 31.41592653589793

Operadores Relacionales o de Comparación

Ejemplo:

Salida:

¿Carlos es alfabéticamente mayor que Ana? True

Operadores Lógicos

Ejemplo:

Salida:

Es par y positivo: True

Operadores Especiales (in, not in, is, is not)

Ejemplo:

Salida:

¿Está 'mango' en la lista de frutas? True

3. Conversión de Tipos de datos.

Python permite la conversión entre tipos de datos, lo que facilita trabajar con diferentes tipos de entrada y asegurar la coherencia de los datos. Este proceso se conoce como conversión de tipo o casting. Existen dos tipos de conversión: conversión implícita (automática por Python) y conversión explícita (que realiza el programador).

Conversión Implícita

Python realiza conversión implícita cuando se combinan tipos de datos compatibles en una expresión. Este tipo de conversión ocurre automáticamente sin necesidad de intervención del usuario, en operaciones donde Python puede asegurar que el cambio no causará pérdida de información.

Aquí, Python convierte automáticamente el entero a a un flotante 5.0 para realizar la operación con b. La variable resultado es de tipo float como resultado de la conversión implícita.

Conversión Explícita

La conversión explícita o casting es el proceso en el que el programador convierte un tipo de dato en otro, de manera manual, utilizando funciones como int(), float(), str(), entre otras. Es especialmente útil al recibir datos de entrada o realizar cálculos que requieren precisión de tipo específico

Ejemplo:

En este ejemplo, convertimos explícitamente el valor edad ingresado como cadena a un entero usando int(). Si el usuario ingresa algo que no puede convertirse en un entero (por ejemplo, letras), se produce un ValueError, que manejamos para indicar un error al usuario.

Tipos de Conversión Explícita Comúnmente Usados

int(x, base=10): Convierte x en un entero. Acepta un segundo parámetro base, que permite convertir números en distintas bases (binario, octal, hexadecimal). La base 10 es la predeterminada.

float(x): Convierte x a flotante.

str(x): Convierte x en una cadena.

hex() y oct(): Estas funciones convierten un número en sus representaciones hexadecimal y octal.

4. Manejo de Errores

Python permite manejar errores mediante el uso de bloques try, except, else, y finally. Esto asegura que el programa no se detenga abruptamente cuando ocurre un error y permite al programador controlar cómo reaccionar a estos errores.

try-except: Se usa para capturar y manejar excepciones. La ejecución del código se mueve al bloque except si ocurre un error en el bloque try.

else: Se ejecuta si no ocurre ninguna excepción en el bloque try.

finally: Se ejecuta siempre, ocurra o no una excepción, y es útil para liberar recursos o realizar tareas de limpieza.

Ejemplo:

ValueError: Si input() no puede convertirse en un número, se produce un ValueError.

ZeroDivisionError: Si el usuario ingresa 0, se produce un ZeroDivisionError al intentar calcular el inverso.

Exception: Captura cualquier otro error inesperado que pudiera ocurrir.

else: Este bloque se ejecuta si no hubo errores.

finally: El bloque finally siempre se ejecuta, y es útil para cerrar archivos o liberar recursos en procesos más complejos.

Datos Técnicos y Compatibilidad

La conversión de tipos básicos (int, float, str, bool) ha estado disponible desde las primeras versiones de Python (Python 1.0).

El manejo de excepciones con try y except también ha sido parte de Python desde Python 1.5.

else y finally en bloques try-except se introdujeron en Python 2.0 y son ampliamente usados en versiones actuales.

Ejercicio Práctico

La clásica Calculadora. En esta versión el programa solicita primero la operación que desea realizar el usuario. Luego, pide los números y muestra el resultado de la operación seleccionada. Si el usuario selecciona una opción inválida, el programa muestra un mensaje de error y termina.

Puedes jugar un poco con el ejemplo antes de pasar al siguiente punto: Estructuras de Control