Introducción a Python

Historia y evolución de Python

Python es un lenguaje de programación interpretado, de alto nivel y de propósito general. Fue creado por Guido van Rossum y su desarrollo comenzó a finales de los años 80 en el Centrum Wiskunde & Informatica (CWI) en los Países Bajos. Desde su creación, Python ha evolucionado significativamente y ha ganado popularidad debido a su simplicidad y versatilidad.

Orígenes y Creación

  • 1980s:

    • A finales de los 80, Guido van Rossum comenzó a trabajar en un nuevo lenguaje de programación como un proyecto de vacaciones.
    • Inspirado por el lenguaje de programación ABC, van Rossum quería corregir algunas de las limitaciones de ABC mientras mantenía sus características atractivas.
  • 1991:

    • Python fue lanzado por primera vez al público en 1991. Guido van Rossum publicó la versión 0.9.0 de Python en alt.sources.
    • Esta versión incluía muchas de las características básicas que aún son esenciales en Python hoy en día: clases con herencia, manejo de excepciones, funciones y los tipos de datos core como str, list, dict, etc.

Desarrollo y Crecimiento

  • 1994:

    • Se lanzó Python 1.0. Esta versión incluía características como el sistema de módulos (inspirado por Modula-3), que facilitaba la reutilización de código y la biblioteca estándar.
    • Python 1.0 introdujo herramientas como lambda, map, filter, y reduce.
  • 2000:

    • Se lanzó Python 2.0. Esta versión introdujo muchas mejoras, incluyendo el recolector de basura de ciclo y la capacidad de listar las comprensiones (list comprehensions).
    • Con Python 2.0, el desarrollo de Python se trasladó a BeOpen.com, y más tarde ese año, Guido y otros desarrolladores de Python formaron la Python Software Foundation (PSF).
  • 2008:

    • Se lanzó Python 3.0 (también conocido como Python 3000 o Py3k). Esta fue una versión mayor del lenguaje que no era completamente compatible hacia atrás con las versiones anteriores.
    • Python 3.0 fue diseñado para rectificar las deficiencias fundamentales del diseño del lenguaje. Algunas de las características principales incluían una sintaxis y semántica más limpias y coherentes, la unificación de tipos int y long, la reorganización de la biblioteca estándar, y mejoras en el manejo de Unicode.

Evolución Reciente

  • 2010s:

    • Python 3.x continuó evolucionando, con versiones incrementales que agregaban nuevas funcionalidades y mejoras. La versión 3.3 introdujo una serie de características como yield from, el módulo ipaddress, y la función mock en unittest.
    • La versión 3.4 introdujo el módulo asyncio para programación asíncrona, y la versión 3.5 añadió async y await como palabras clave, facilitando la escritura de código concurrente.
  • 2020:

    • Se lanzó Python 3.9, que trajo mejoras de rendimiento, nuevas sintaxis como el operador de unión de tipos, y optimizaciones en la biblioteca estándar.
  • 2021:

    • Python 3.10 fue lanzado con características nuevas como match-case (sintaxis similar a switch/case), mejoras en la tipificación, y optimizaciones de rendimiento.

Python en la Actualidad

  • Popularidad:

    • Python ha crecido hasta convertirse en uno de los lenguajes de programación más populares en el mundo, ampliamente utilizado en ciencia de datos, desarrollo web, automatización, inteligencia artificial, y más.
    • Es conocido por su sintaxis sencilla y legible, lo que lo convierte en una excelente opción tanto para principiantes como para desarrolladores experimentados.
  • Comunidad:

    • La comunidad de Python es muy activa y contribuye constantemente al desarrollo del lenguaje y su ecosistema. La Python Software Foundation (PSF) sigue siendo una entidad clave en el apoyo y desarrollo continuo de Python.
  • Futuro:

    • Python continúa evolucionando con nuevas versiones que se enfocan en mejoras de rendimiento, nuevas características del lenguaje, y expansiones de la biblioteca estándar.

Instalación de Python

Instalar Python es el primer paso para comenzar a desarrollar en este potente lenguaje de programación. A continuación, te mostraré cómo instalar Python en diferentes sistemas operativos: Windows, macOS y Linux.

Instalación

  1. Descargar el Instalador:

    • Visita la página oficial de descargas de Python: python.org/downloads
    • Descarga el instalador para Windows. Asegúrate de elegir la versión más reciente de Python.
  2. Ejecutar el Instalador:

    • Ejecuta el instalador descargado.
    • En la primera pantalla, asegúrate de marcar la opción «Add Python to PATH» antes de hacer clic en «Install Now».
  3. Completar la Instalación:

    • El instalador se encargará de copiar los archivos necesarios y configurar Python en tu sistema.
    • Una vez completada la instalación, verás una pantalla de éxito.
  4. Verificar la Instalación:

    • Abre el símbolo del sistema (CMD) y escribe el siguiente comando para verificar que Python se instaló correctamente:
				
					python --version
				
			

Configuración del Entorno de Desarrollo

Después de instalar Python, es una buena práctica configurar un entorno de desarrollo integrado (IDE) y entornos virtuales.

Instalación de un IDE

  1. Visual Studio Code:

    • Visita code.visualstudio.com y descarga Visual Studio Code para tu sistema operativo.
    • Instala la extensión de Python para VS Code desde el marketplace.
  2. PyCharm:

    • Visita jetbrains.com/pycharm y descarga PyCharm Community Edition (gratuita) o Professional Edition.
    • Sigue las instrucciones del instalador.

Primer programa en Python: "Hola Mundo"

1. Escribir el Código

  1. Abre tu editor de texto favorito (como Notepad en Windows, TextEdit en macOS, o Gedit en Linux).
  2. Escribe el siguiente código:
				
					print("Hola Mundo")

				
			
  1. Guarda el archivo con el nombre hola_mundo.py. Asegúrate de que la extensión del archivo sea .py.

2. Ejecutar el Programa

  1. Abre una terminal (o el símbolo del sistema en Windows).

  2. Navega al directorio donde guardaste hola_mundo.py. Puedes usar el comando cd para cambiar de directorio. Por ejemplo:

				
					cd C:\ruta\del\directorio

				
			
  1. Ejecuta el programa escribiendo:

    • En Windows:

				
					python hola_mundo.py

				
			

Explicación del Código

    • print: print es una función integrada en Python que se utiliza para mostrar mensajes en la pantalla.
    • «Hola Mundo»: Las comillas dobles (") indican que el texto contenido es una cadena de caracteres (string). print mostrará cualquier cosa que esté dentro de las comillas.

Sintaxis básica

Vamos a cubrir los conceptos fundamentales de la sintaxis básica en Python. Estos incluyen variables, tipos de datos, operadores, comentarios y estructuras de control básicas.

Código de Ejemplo

				
					# Comentario de una sola línea

"""
Comentario
de varias
líneas
"""

# Variables y Tipos de Datos
mensaje = "Hola, Mundo"  # Cadena de texto
entero = 10             # Entero
flotante = 10.5         # Flotante
booleano = True         # Booleano

# Operadores Aritméticos
suma = 5 + 3
resta = 5 - 3
multiplicacion = 5 * 3
division = 5 / 3
division_entera = 5 // 3
modulo = 5 % 3
potencia = 5 ** 3

# Estructuras de Control: Condicionales
if entero > 5:
    print("El número es mayor que 5")
elif entero == 5:
    print("El número es 5")
else:
    print("El número es menor que 5")

# Estructuras de Control: Bucles
# Bucle for
for i in range(5):
    print("Iteración", i)

# Bucle while
contador = 0
while contador < 5:
    print("Contador:", contador)
    contador += 1

# Funciones
def saludar(nombre):
    return "Hola, " + nombre

print(saludar("Pythonista"))

# Listas
frutas = ["manzana", "plátano", "cereza"]
print(frutas[0])  # Acceso al primer elemento
frutas.append("naranja")  # Añadir un elemento al final
print(frutas)

# Diccionarios
persona = {"nombre": "Juan", "edad": 30}
print(persona["nombre"])  # Acceso al valor de una clave
persona["edad"] = 31  # Modificar el valor de una clave
print(persona)

				
			

Explicación

Comentarios

  • Comentarios de una sola línea: Se utilizan con el símbolo #. Todo lo que sigue al # en la misma línea es ignorado por el intérprete.
  • Comentarios de varias líneas: Se pueden crear usando tres comillas dobles (""") o tres comillas simples ('''). Todo lo que esté entre estas comillas será ignorado por el intérprete.

Variables y Tipos de Datos

  • Variables: Se crean al asignar un valor a un nombre de variable utilizando el operador =.
  • Tipos de Datos:
    • Cadenas de texto (str): Texto encerrado entre comillas dobles o simples.
    • Enteros (int): Números enteros.
    • Flotantes (float): Números con punto decimal.
    • Booleanos (bool): Valores True o False.

Operadores Aritméticos

  • Suma (+): Añade dos números.
  • Resta (-): Resta el segundo número del primero.
  • Multiplicación (*): Multiplica dos números.
  • División (/): Divide el primer número por el segundo y devuelve un flotante.
  • División Entera (//): Divide el primer número por el segundo y devuelve un entero.
  • Módulo (%): Devuelve el resto de la división del primer número por el segundo.
  • Potencia (**): Eleva el primer número a la potencia del segundo.

Estructuras de Control: Condicionales

  • Condicional if: Ejecuta un bloque de código si una condición es verdadera.
  • Condicional elif: Ejecuta un bloque de código si la condición anterior es falsa y su condición es verdadera.
  • Condicional else: Ejecuta un bloque de código si todas las condiciones anteriores son falsas.

Estructuras de Control: Bucles

  • Bucle for: Itera sobre una secuencia (por ejemplo, una lista, un rango).
  • Bucle while: Repite un bloque de código mientras una condición es verdadera.

Funciones

  • Definición de funciones: Se definen con la palabra clave def, seguida del nombre de la función y paréntesis. El bloque de código de la función se escribe a continuación, indentado.
  • Retorno de valores: Se usa la palabra clave return para devolver un valor desde una función.

Listas

  • Listas: Son colecciones ordenadas y mutables de elementos. Se definen utilizando corchetes [].
  • Acceso a elementos: Se puede acceder a los elementos de una lista mediante índices.
  • Métodos de listas: Métodos como append permiten modificar las listas.

Diccionarios

  • Diccionarios: Son colecciones desordenadas de pares clave-valor. Se definen utilizando llaves {}.
  • Acceso a valores: Se puede acceder a los valores mediante sus claves.
  • Modificación de valores: Se pueden modificar los valores de un diccionario usando sus claves.

Variables y tipos de datos

Las variables y los tipos de datos son conceptos fundamentales en cualquier lenguaje de programación. En Python, las variables son dinámicamente tipadas, lo que significa que no es necesario declarar su tipo explícitamente. A continuación, veremos cómo se manejan las variables y los diferentes tipos de datos en Python.

Código de Ejemplo

				
					# Declaración de Variables
mensaje = "Hola, Mundo"  # Cadena de texto
numero_entero = 42       # Entero
numero_flotante = 3.14   # Flotante
valor_booleano = True    # Booleano

# Imprimir valores y tipos
print(mensaje)  # Hola, Mundo
print(type(mensaje))  # <class 'str'>

print(numero_entero)  # 42
print(type(numero_entero))  # <class 'int'>

print(numero_flotante)  # 3.14
print(type(numero_flotante))  # <class 'float'>

print(valor_booleano)  # True
print(type(valor_booleano))  # <class 'bool'>

# Conversión de Tipos de Datos
entero_a_cadena = str(numero_entero)  # Convertir entero a cadena
cadena_a_entero = int("123")  # Convertir cadena a entero
flotante_a_entero = int(numero_flotante)  # Convertir flotante a entero
entero_a_flotante = float(numero_entero)  # Convertir entero a flotante
booleano_a_entero = int(valor_booleano)  # Convertir booleano a entero

# Imprimir conversiones
print(entero_a_cadena)  # "42"
print(type(entero_a_cadena))  # <class 'str'>

print(cadena_a_entero)  # 123
print(type(cadena_a_entero))  # <class 'int'>

print(flotante_a_entero)  # 3
print(type(flotante_a_entero))  # <class 'int'>

print(entero_a_flotante)  # 42.0
print(type(entero_a_flotante))  # <class 'float'>

print(booleano_a_entero)  # 1
print(type(booleano_a_entero))  # <class 'int'>

				
			

Explicación

Declaración de Variables

Las variables en Python se crean simplemente asignando un valor a un nombre de variable utilizando el operador =. Las variables no requieren una declaración previa de tipo, ya que Python es dinámicamente tipado. Puedes asignar valores como cadenas de texto, enteros, flotantes y booleanos a las variables.

Tipos de Datos

  • Cadena de texto (str): Una secuencia de caracteres encerrada entre comillas dobles o simples. En el ejemplo, mensaje es una cadena de texto.
  • Entero (int): Un número entero sin punto decimal. En el ejemplo, numero_entero es un entero.
  • Flotante (float): Un número que incluye una parte decimal. En el ejemplo, numero_flotante es un flotante.
  • Booleano (bool): Un valor que puede ser True o False. En el ejemplo, valor_booleano es un booleano.

Imprimir Valores y Tipos

La función print se utiliza para mostrar el valor de una variable en la consola. La función type devuelve el tipo de datos de una variable. Esto es útil para verificar el tipo de una variable durante la depuración.

Conversión de Tipos de Datos

Python proporciona funciones para convertir un tipo de dato a otro:

  • str(): Convierte un valor a una cadena de texto.
  • int(): Convierte un valor a un entero. Las cadenas deben representar un número válido.
  • float(): Convierte un valor a un flotante.
  • bool(): Convierte un valor a booleano.

Estas conversiones son útiles cuando necesitas cambiar el tipo de dato de una variable para realizar ciertas operaciones.

Ejemplo de Conversiones

  • Conversión de entero a cadena: Convierte un número entero a una representación en cadena de texto.
  • Conversión de cadena a entero: Convierte una cadena de texto que representa un número a un entero.
  • Conversión de flotante a entero: Convierte un número con parte decimal a un entero, truncando la parte decimal.
  • Conversión de entero a flotante: Convierte un número entero a un flotante, añadiendo una parte decimal .0.
  • Conversión de booleano a entero: Convierte True a 1 y False a 0.

Resumen

  • Variables: Son nombres que se asignan a valores almacenados en memoria.
  • Tipos de Datos: Incluyen cadenas de texto (str), enteros (int), flotantes (float) y booleanos (bool).
  • Imprimir Valores y Tipos: Utilizamos print para mostrar valores y type para mostrar tipos de datos.
  • Conversión de Tipos de Datos: Utilizamos str(), int(), float(), y bool() para convertir entre diferentes tipos de datos.

Operadores (aritméticos, lógicos, relacionales, de asignación)

Los operadores en Python permiten realizar operaciones con variables y valores. Existen diferentes tipos de operadores que cubren una amplia gama de operaciones: aritméticas, lógicas, relacionales y de asignación.

Código de Ejemplo

				
					# Operadores Aritméticos
a = 10
b = 5
suma = a + b
resta = a - b
multiplicacion = a * b
division = a / b
division_entera = a // b
modulo = a % b
potencia = a ** b

# Operadores de Asignación
c = 10
c += 5  # Equivalente a c = c + 5
c -= 3  # Equivalente a c = c - 3
c *= 2  # Equivalente a c = c * 2
c /= 2  # Equivalente a c = c / 2
c %= 3  # Equivalente a c = c % 3
c **= 2  # Equivalente a c = c ** 2
c //= 2  # Equivalente a c = c // 2

# Operadores Relacionales
d = 10
e = 5
igual = d == e
diferente = d != e
mayor_que = d > e
menor_que = d < e
mayor_o_igual = d >= e
menor_o_igual = d <= e

# Operadores Lógicos
verdadero = True
falso = False
and_operador = verdadero and falso  # False
or_operador = verdadero or falso    # True
not_operador = not verdadero        # False

# Imprimir resultados
print("Operadores Aritméticos")
print("Suma:", suma)
print("Resta:", resta)
print("Multiplicación:", multiplicacion)
print("División:", division)
print("División Entera:", division_entera)
print("Módulo:", modulo)
print("Potencia:", potencia)

print("\nOperadores de Asignación")
print("c += 5:", c)

print("\nOperadores Relacionales")
print("d == e:", igual)
print("d != e:", diferente)
print("d > e:", mayor_que)
print("d < e:", menor_que)
print("d >= e:", mayor_o_igual)
print("d <= e:", menor_o_igual)

print("\nOperadores Lógicos")
print("verdadero and falso:", and_operador)
print("verdadero or falso:", or_operador)
print("not verdadero:", not_operador)

				
			

Explicación

Operadores Aritméticos

  • Suma (+): Añade dos números.
  • Resta (-): Resta el segundo número del primero.
  • Multiplicación (*): Multiplica dos números.
  • División (/): Divide el primer número por el segundo y devuelve un flotante.
  • División Entera (//): Divide el primer número por el segundo y devuelve un entero.
  • Módulo (%): Devuelve el resto de la división del primer número por el segundo.
  • Potencia (**): Eleva el primer número a la potencia del segundo.

Operadores de Asignación

  • Asignación (=): Asigna un valor a una variable.
  • Asignación Suma (+=): Añade y asigna el resultado a la variable.
  • Asignación Resta (-=): Resta y asigna el resultado a la variable.
  • Asignación Multiplicación (*=): Multiplica y asigna el resultado a la variable.
  • Asignación División (/=): Divide y asigna el resultado a la variable.
  • Asignación Módulo (%=): Aplica el operador módulo y asigna el resultado a la variable.
  • Asignación Potencia (**=): Eleva a la potencia y asigna el resultado a la variable.
  • Asignación División Entera (//=): Aplica la división entera y asigna el resultado a la variable.

Operadores Relacionales

  • Igual a (==): Compara si dos valores son iguales.
  • Distinto de (!=): Compara si dos valores son diferentes.
  • Mayor que (>): Compara si el primer valor es mayor que el segundo.
  • Menor que (<): Compara si el primer valor es menor que el segundo.
  • Mayor o igual que (>=): Compara si el primer valor es mayor o igual que el segundo.
  • Menor o igual que (<=): Compara si el primer valor es menor o igual que el segundo.

Operadores Lógicos

  • AND (and): Devuelve True si ambas expresiones son verdaderas.
  • OR (or): Devuelve True si al menos una de las expresiones es verdadera.
  • NOT (not): Invierte el valor lógico de la expresión.

Resumen

  • Operadores Aritméticos: Permiten realizar operaciones matemáticas básicas como suma, resta, multiplicación, división, etc.
  • Operadores de Asignación: Utilizados para asignar valores a las variables, incluyendo la combinación de asignación con operaciones aritméticas.
  • Operadores Relacionales: Comparan dos valores y devuelven un valor booleano (True o False).
  • Operadores Lógicos: Utilizados para combinar expresiones lógicas, permitiendo la evaluación de múltiples condiciones.