16. Introducción a Python#
“La revolución científica no ha sido una revolución del conocimiento. Ha sido, ante todo, una revolución de la ignorancia. El gran descubrimiento que puso en marcha la revolución científica fue el descubrimiento de que los humanos no saben las respuestas a sus preguntas más importantes.”
—Yuval Noah Harari, De animales a dioses (2014)
16.1. 🎯 Objetivos de Aprendizaje#
Al finalizar este capítulo, serás capaz de:
Explicar qué es Python y por qué es útil para analizar datos históricos
Escribir tu primer programa en Python usando la función
print()Realizar operaciones matemáticas básicas aplicadas a cálculos históricos
Identificar los cuatro tipos de datos básicos en Python
Crear y manipular listas, tuplas y diccionarios con información histórica
Tiempo estimado
⏱️ 90 minutos de trabajo (incluye práctica)
16.2. ¿Qué es Python?#
Python es un lenguaje de programación ampliamente utilizado en aplicaciones web, desarrollo de software, ciencia de datos y machine learning (aprendizaje automático). Los desarrolladores y científicos utilizan Python porque es eficiente, fácil de aprender y se puede ejecutar en múltiples plataformas.
¿Por qué Python para estudiar Historia?
Python nos permite:
Analizar grandes volúmenes de datos históricos (censos, registros, archivos)
Visualizar tendencias a lo largo del tiempo
Automatizar tareas repetitivas de investigación
Procesar textos históricos de manera eficiente
16.2.1. Características principales de Python#
Característica |
Descripción |
Ventaja para el historiador |
|---|---|---|
Lenguaje interpretado |
Ejecuta el código línea por línea |
Puedes ver resultados inmediatamente |
Fácil de aprender |
Sintaxis similar al inglés |
Curva de aprendizaje suave |
Tipado dinámico |
No necesitas declarar tipos de variables |
Escritura de código más rápida |
Alto nivel |
Cercano al lenguaje humano |
Menos preocupación por detalles técnicos |
Tabla 14.1: Características principales de Python
16.2.2. Breve Historia de Python#
Guido van Rossum, un programador de los Países Bajos, creó Python en 1989 en el Centrum Wiskunde & Informatica (CWI). Comenzó como un proyecto personal durante las vacaciones de Navidad. El nombre del lenguaje se inspiró en el programa de televisión de la BBC “Monty Python’s Flying Circus”, del cual Van Rossum era gran admirador.
Conexión histórica
En 1989, mientras Van Rossum creaba Python, ocurrían eventos históricos trascendentales: la caída del Muro de Berlín, el fin de la Guerra Fría y en Chile, las primeras elecciones democráticas después de la dictadura militar.
16.3. ¿Qué es Jupyter Notebook?#
Jupyter Notebook es una aplicación que permite crear documentos que combinan:
Código ejecutable en Python
Texto explicativo con formato enriquecido
Visualizaciones como gráficos e imágenes
Ecuaciones matemáticas
Esta combinación hace que Jupyter sea ideal para la investigación y la educación, permitiendo documentar el proceso de análisis paso a paso.
16.4. Mi Primer Programa: Registros Históricos#
La función print() es la forma más básica de mostrar información en pantalla. Imagina que eres un cronista colonial y necesitas registrar eventos importantes:
# Mi primer programa: Un registro histórico
print("Registro Histórico: Comienza nuestra exploración del pasado con Python")
Registro Histórico: Comienza nuestra exploración del pasado con Python
# Podemos imprimir fechas históricas importantes
print("Primera Junta Nacional de Gobierno de Chile: 18 de septiembre de 1810")
print("Declaración de Independencia de Chile: 12 de febrero de 1818")
Primera Junta Nacional de Gobierno de Chile: 18 de septiembre de 1810
Declaración de Independencia de Chile: 12 de febrero de 1818
# También podemos imprimir números (sin comillas)
print(1810) # Año de la Primera Junta
print(1818) # Año de la Independencia
1810
1818
16.5. Operaciones Matemáticas: Calculando la Historia#
Python puede realizar operaciones matemáticas directamente. Esto es muy útil para calcular duraciones, poblaciones, distancias y otros datos históricos.
16.5.1. Operadores aritméticos básicos#
Operador |
Operación |
Ejemplo |
Resultado |
|---|---|---|---|
|
Suma |
|
|
|
Resta |
|
|
|
Multiplicación |
|
|
|
División |
|
|
|
Potencia |
|
|
|
División entera |
|
|
|
Módulo (resto) |
|
|
Tabla 14.2: Operadores aritméticos en Python
# ¿Cuántos años han pasado desde la Independencia de Chile?
año_actual = 2025
año_independencia = 1818
años_transcurridos = año_actual - año_independencia
print(f"Han pasado {años_transcurridos} años desde la Independencia de Chile")
Han pasado 207 años desde la Independencia de Chile
# Calculemos la duración del Imperio Romano de Occidente
# Desde la fundación tradicional de Roma (753 a.C.) hasta la caída (476 d.C.)
inicio_roma = -753 # Usamos números negativos para a.C.
caida_occidente = 476
duracion = caida_occidente - inicio_roma
print(f"El Imperio Romano (occidental) duró aproximadamente {duracion} años")
El Imperio Romano (occidental) duró aproximadamente 1229 años
# Estimación de población: Si el Imperio Romano tenía ~60 millones de habitantes
# y el mundo actual tiene ~8000 millones, ¿cuántas veces mayor es la población actual?
poblacion_romana = 60_000_000 # Podemos usar guiones bajos para legibilidad
poblacion_actual = 8_000_000_000
proporcion = poblacion_actual / poblacion_romana
print(f"La población mundial actual es {proporcion:.1f} veces mayor que la del Imperio Romano")
La población mundial actual es 133.3 veces mayor que la del Imperio Romano
16.6. Tipos de Datos Básicos#
En Python, cada dato tiene un tipo que determina qué operaciones se pueden realizar con él. Los cuatro tipos básicos son:
Los cuatro tipos básicos
int(entero): Números sin decimales →1810,-753,42float(flotante): Números con decimales →3.14,19.99,-273.15str(string/cadena): Texto entre comillas →"Bernardo O'Higgins",'Chile'bool(booleano): Valores lógicos →True,False
# Ejemplos con datos históricos chilenos
# Entero (int): Año de un evento
año_batalla_maipu = 1818
print(f"Año de la Batalla de Maipú: {año_batalla_maipu}")
print(f"Tipo: {type(año_batalla_maipu)}")
Año de la Batalla de Maipú: 1818
Tipo: <class 'int'>
# Flotante (float): Coordenadas geográficas
latitud_santiago = -33.45
longitud_santiago = -70.67
print(f"Coordenadas de Santiago: ({latitud_santiago}, {longitud_santiago})")
print(f"Tipo: {type(latitud_santiago)}")
Coordenadas de Santiago: (-33.45, -70.67)
Tipo: <class 'float'>
# String (str): Nombres y textos
procer_chileno = "Bernardo O'Higgins Riquelme"
cargo = 'Director Supremo de Chile'
print(f"{procer_chileno} fue {cargo}")
print(f"Tipo: {type(procer_chileno)}")
Bernardo O'Higgins Riquelme fue Director Supremo de Chile
Tipo: <class 'str'>
# Booleano (bool): Verdadero o Falso
chile_es_republica = True
tiene_monarquia = False
print(f"¿Chile es una república? {chile_es_republica}")
print(f"¿Chile tiene monarquía? {tiene_monarquia}")
print(f"Tipo: {type(chile_es_republica)}")
¿Chile es una república? True
¿Chile tiene monarquía? False
Tipo: <class 'bool'>
16.6.1. La función type()#
La función type() nos permite verificar el tipo de cualquier dato:
# Verificando tipos de datos
print(type(1810)) # int
print(type(3.14159)) # float
print(type("Historia")) # str
print(type(True)) # bool
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
16.7. Estructuras de Datos: Organizando la Historia#
Además de los tipos básicos, Python tiene estructuras de datos que permiten organizar múltiples valores.
16.7.1. Listas (list)#
Una lista es una colección ordenada y modificable de elementos. Se crean usando corchetes [].
Analogía histórica
Piensa en una lista como un catálogo de museo: cada pieza tiene una posición específica y podemos agregar o quitar piezas.
# Lista de presidentes de Chile durante el siglo XX (algunos)
presidentes_chile = [
"Arturo Alessandri Palma",
"Carlos Ibáñez del Campo",
"Pedro Aguirre Cerda",
"Gabriel González Videla",
"Eduardo Frei Montalva",
"Salvador Allende"
]
print("Algunos presidentes de Chile en el siglo XX:")
print(presidentes_chile)
Algunos presidentes de Chile en el siglo XX:
['Arturo Alessandri Palma', 'Carlos Ibáñez del Campo', 'Pedro Aguirre Cerda', 'Gabriel González Videla', 'Eduardo Frei Montalva', 'Salvador Allende']
# Acceder a elementos por índice (¡empieza en 0!)
print(f"Primer presidente en la lista: {presidentes_chile[0]}")
print(f"Último presidente en la lista: {presidentes_chile[-1]}")
print(f"Total de presidentes en la lista: {len(presidentes_chile)}")
Primer presidente en la lista: Arturo Alessandri Palma
Último presidente en la lista: Salvador Allende
Total de presidentes en la lista: 6
# Las listas son modificables: podemos agregar elementos
presidentes_chile.append("Patricio Aylwin")
print(f"Lista actualizada: {presidentes_chile}")
Lista actualizada: ['Arturo Alessandri Palma', 'Carlos Ibáñez del Campo', 'Pedro Aguirre Cerda', 'Gabriel González Videla', 'Eduardo Frei Montalva', 'Salvador Allende', 'Patricio Aylwin']
16.7.2. Tuplas (tuple)#
Una tupla es una colección ordenada pero inmutable (no se puede modificar). Se crean usando paréntesis ().
Analogía histórica
Piensa en una tupla como una inscripción en piedra: una vez grabada, no puede modificarse.
# Coordenadas geográficas de sitios históricos (no deben cambiar)
coordenadas_palacio_moneda = (-33.4425, -70.6538)
print(f"Coordenadas del Palacio de La Moneda: {coordenadas_palacio_moneda}")
print(f"Tipo: {type(coordenadas_palacio_moneda)}")
Coordenadas del Palacio de La Moneda: (-33.4425, -70.6538)
Tipo: <class 'tuple'>
16.7.3. Diccionarios (dict)#
Un diccionario es una colección de pares clave-valor. Se crean usando llaves {}.
Analogía histórica
Piensa en un diccionario como una ficha de archivo histórico: cada campo (clave) tiene un valor asociado.
# Ficha de un personaje histórico
ficha_ohiggins = {
"nombre": "Bernardo O'Higgins Riquelme",
"nacimiento": 1778,
"fallecimiento": 1842,
"cargo": "Director Supremo de Chile",
"periodo": "1817-1823",
"lugar_nacimiento": "Chillán Viejo"
}
print("Ficha histórica de O'Higgins:")
for clave, valor in ficha_ohiggins.items():
print(f" {clave}: {valor}")
Ficha histórica de O'Higgins:
nombre: Bernardo O'Higgins Riquelme
nacimiento: 1778
fallecimiento: 1842
cargo: Director Supremo de Chile
periodo: 1817-1823
lugar_nacimiento: Chillán Viejo
16.7.4. Resumen: Comparación de estructuras de datos#
Estructura |
Símbolo |
Ordenada |
Modificable |
Ejemplo histórico |
|---|---|---|---|---|
Lista |
|
✅ Sí |
✅ Sí |
Lista de batallas |
Tupla |
|
✅ Sí |
❌ No |
Coordenadas geográficas |
Diccionario |
|
✅ Sí |
✅ Sí |
Ficha biográfica |
Tabla 14.3: Comparación de estructuras de datos en Python
16.8. 📝 Actividades de Cierre#
Instrucciones
Resuelve cada ejercicio en las celdas de código. Usa comentarios para explicar tu razonamiento.
16.8.1. Ejercicio 1: Cálculos históricos#
Calcula cuántos años duró la Colonia en Chile (desde la fundación de Santiago en 1541 hasta la Primera Junta de 1810).
# Ejercicio 1: Escribe tu código aquí
16.8.2. Ejercicio 2: Lista de batallas#
Crea una lista con las fechas de las principales batallas de la Independencia de Chile: Rancagua (1814), Chacabuco (1817), Maipú (1818).
# Ejercicio 2: Escribe tu código aquí
16.8.3. Ejercicio 3: Diccionario histórico#
Crea un diccionario con información sobre la Batalla de Maipú (fecha, lugar, resultado, comandante patriota).
# Ejercicio 3: Escribe tu código aquí
16.9. 📋 Resumen del Capítulo#
Concepto |
Descripción |
Ejemplo |
|---|---|---|
|
Muestra información en pantalla |
|
Operadores |
Realizan cálculos matemáticos |
|
|
Números enteros |
|
|
Números decimales |
|
|
Texto/cadenas |
|
|
Valores lógicos |
|
|
Colección ordenada y modificable |
|
|
Colección ordenada e inmutable |
|
|
Pares clave-valor |
|
Tabla 14.4: Resumen de conceptos del Capítulo 14
16.10. 📚 Referencias y Bibliografía#
Amazon Web Services. (2024). ¿Qué es Python? AWS Documentation. https://aws.amazon.com/es/what-is/python/
Python Software Foundation. (2024). The Python Tutorial. https://docs.python.org/3/tutorial/
Memoria Chilena. (s.f.). Independencia de Chile (1810-1818). Biblioteca Nacional de Chile. https://www.memoriachilena.gob.cl/