Tipos de Datos en Python

1. Tipos de datos básicos de Python
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.
int existe desde las primeras versiones de Python. En Python 3, int representa enteros de precisión arbitraria y absorbió el antiguo tipo long de Python 2
Tamaño en bits: La precisión es arbitraria, por lo que depende del valor.

Salida:
Factorial de 50: 30414093201713378043612608166064768844377641568960512000000000000
Flotantes (float)
Descripción: En CPython, float normalmente utiliza números de punto flotante de doble precisión correspondientes a un double de C, habitualmente IEEE 754 binary64.
Versión disponible: Desde Python 2.
Tamaño en bits: 64 bits.

Salida:
Raíz cúbica de 27: 3.0
Cadenas de Texto (str)
str representa texto Unicode mediante una secuencia inmutable de puntos de código. La cantidad de bytes utilizada para almacenar o transmitir ese texto depende de la codificación utilizada, como UTF-8.

Salida:
Somos SENATI
Mensaje repetido: Python Python Python
Booleanos (bool)
bool representa valores de verdad mediante True y False. En Python, bool es un subtipo de int; True y False se comportan respectivamente como 1 y 0 en muchos contextos numéricos.

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.

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.
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.
Pasemos a Estructuras de Datos
