Python Básico
Un lenguaje de programación versátil y poderoso

¿Qué es Python?

Python es un lenguaje de programación de código abierto y alto nivel, creado por Guido van Rossum en 1991. Se caracteriza por su sintaxis sencilla y legible, similar al lenguaje natural, lo que lo hace fácil de aprender y usar, incluso para principiantes.

Python es un lenguaje de propósito general, lo que significa que se puede utilizar para una amplia variedad de tareas, incluyendo:

  • Desarrollo web: Python es ampliamente utilizado para el desarrollo web back-end, gracias a sus potentes frameworks como Django y Flask.
  • Ciencia de datos: Python es un lenguaje líder en ciencia de datos y análisis de datos, debido a sus bibliotecas especializadas como NumPy, Pandas y SciPy.
  • Inteligencia artificial: Python es una herramienta clave en el campo de la inteligencia artificial, gracias a su capacidad para manejar grandes conjuntos de datos y su integración con bibliotecas como TensorFlow y PyTorch.
  • Automatización: Python se utiliza ampliamente para la automatización de tareas, desde la administración de sistemas hasta la creación de scripts para tareas repetitivas.
  • Desarrollo de aplicaciones: Python se puede utilizar para crear aplicaciones de escritorio, móviles y web con frameworks como PyQt, Kivy y Beeware.

¿Por qué aprender Python?

Existen numerosas razones por las que aprender Python es una habilidad valiosa en el mundo actual:

  • Alta demanda: Python es uno de los lenguajes de programación más demandados por las empresas en todo el mundo, lo que significa que las oportunidades laborales para los desarrolladores de Python son abundantes.
  • Facilidad de aprendizaje: La sintaxis sencilla y legible de Python lo convierte en un lenguaje ideal para principiantes, incluso para aquellos sin experiencia previa en programación.
  • Versatilidad: Python se puede utilizar para una amplia variedad de tareas, lo que lo convierte en una herramienta valiosa para profesionales de diversos campos.
  • Amplia comunidad: Python cuenta con una comunidad global grande y activa de desarrolladores, lo que significa que hay una gran cantidad de recursos disponibles para aprender y recibir ayuda.

Características relevantes de Python:

  • Interpretado: Python es un lenguaje interpretado, lo que significa que no necesita ser compilado antes de ejecutarse. Esto lo hace más rápido y fácil de desarrollar.
  • Orientado a objetos: Python es un lenguaje orientado a objetos, lo que permite crear código modular y reutilizable.
  • Gestión de memoria automática: Python gestiona la memoria automáticamente, lo que significa que no hay que preocuparse por la liberación de memoria manualmente.
  • Amplia biblioteca estándar: Python viene con una amplia biblioteca estándar que incluye módulos para una variedad de tareas comunes.
  • Gran cantidad de bibliotecas de terceros: Existe una gran cantidad de bibliotecas de terceros disponibles para Python, que amplían aún más sus capacidades.

En resumen, Python es un lenguaje de programación versátil y poderoso que es fácil de aprender y usar. Su amplia gama de aplicaciones y su alta demanda lo convierten en una habilidad valiosa para cualquier persona que quiera ingresar al mundo de la tecnología.

Tipos de variables en Python

En Python, las variables se utilizan para almacenar datos. El tipo de variable determina el tipo de dato que puede almacenar la variable y las operaciones que se pueden realizar con ella.

Tipos de datos primitivos:

Python tiene cuatro tipos de datos primitivos:

  • Enteros (int): Números enteros positivos, negativos o cero. Por ejemplo: 1, -100, 0
  • Decimales (float): Números con parte decimal. Por ejemplo: 3.14, -5.2, 10.0
  • Booleanos (bool): Representan dos valores: True (verdadero) y False (falso). Por ejemplo: True, False
  • Cadenas de texto (str): Secuencias de caracteres. Por ejemplo: «Hola», «Mundo!», «Python 3»

Tipos de datos compuestos:

Además de los tipos de datos primitivos, Python también tiene varios tipos de datos compuestos que se pueden usar para almacenar colecciones de datos:

  • Listas (list): Colecciones ordenadas de elementos mutables. Se pueden almacenar diferentes tipos de datos en una lista. Por ejemplo: [1, 2, 3, "Hola"]
  • Tuplas (tuple): Colecciones ordenadas e inmutables de elementos. Se pueden almacenar diferentes tipos de datos en una tupla. Por ejemplo: (1, 2, 3, "Hola")
  • Diccionarios (dict): Colecciones no ordenadas de pares clave-valor. Las claves deben ser únicas y pueden ser de cualquier tipo de dato, mientras que los valores pueden ser de cualquier tipo de dato. Por ejemplo: {"nombre": "Juan", "edad": 30, "ciudad": "Medellín"}
  • Conjuntos (set): Colecciones no ordenadas de elementos únicos. Los elementos deben ser hashable (convertibles a un hash). Por ejemplo: {1, 2, 3, "Hola"}

Asignación de variables:

Para asignar un valor a una variable, se utiliza el operador de asignación (=). Por ejemplo:

Python

edad = 30
nombre = "Juan"
mensaje = "Hola, mundo!"

Operaciones con variables:

El tipo de operaciones que se pueden realizar con una variable depende del tipo de dato que almacena. Por ejemplo, se pueden sumar dos números enteros, concatenar dos cadenas de texto o comparar dos valores booleanos.

Ejemplo:

Python

edad = 30
nombre = "Juan"

print(edad + 5)  # Salida: 35
print(nombre + " Pérez")  # Salida: Juan Pérez
print(edad == 30)  # Salida: True

Conclusión:

Las variables son una herramienta fundamental en la programación. Es importante comprender los diferentes tipos de variables disponibles en Python y cómo usarlas para almacenar y manipular datos de manera efectiva.

Operadores aritméticos

Los operadores aritméticos se utilizan para realizar operaciones matemáticas con números. En Python, hay los siguientes operadores aritméticos:

OperadorDescripciónEjemplo
+Suma5 + 3 = 8
-Resta10 - 4 = 6
*Multiplicación2 * 7 = 14
/División16 / 4 = 4.0
//División entera9 // 4 = 2
%Módulo (residuo de la división)10 % 3 = 1
**Potencia2 ** 3 = 8

Operadores de comparación

Los operadores de comparación se utilizan para comparar dos valores y devolver un valor booleano (verdadero o falso) en función del resultado de la comparación. En Python, hay los siguientes operadores de comparación:

OperadorDescripciónEjemplo
==Igualdad5 == 3 = False
!=Distinto5 != 3 = True
>Mayor que7 > 5 = True
<Menor que3 < 7 = True
>=Mayor o igual que5 >= 5 = True
<=Menor o igual que3 <= 7 = True

Prioridad de los operadores

Es importante tener en cuenta la prioridad de los operadores al realizar expresiones matemáticas. Los operadores tienen una prioridad fija, lo que significa que se ejecutan en un orden específico. La siguiente tabla muestra la prioridad de los operadores en Python, de mayor a menor:

  1. Paréntesis
  2. Potenciación (**)
  3. Multiplicación (*) y División (///)
  4. Suma (+) y Resta (-)
  5. Comparación (==!=><>=<=)

Los operadores entre paréntesis se ejecutan primero, seguidos por los operadores de potenciación, luego los de multiplicación y división, luego los de suma y resta, y finalmente los de comparación. Si una expresión contiene varios operadores con la misma prioridad, se ejecutan de izquierda a derecha.

5 * (2 + 3)  # Multiplicación antes que la suma excepto si existe paréntesis (resultado: 25)
10 - 5 / 2  # División antes que la resta (resultado: 7.5)
(10 + 5) ** 2  # Potenciación antes de la suma excepto si existe paréntesis (resultado: 225)

Estructuras de datos

Las estructuras de datos son elementos fundamentales en la programación que permiten almacenar, organizar y manipular información de manera eficiente. En Python, existen diversas estructuras de datos que se adaptan a diferentes necesidades:

1. Listas:

Las listas son colecciones ordenadas y mutables de elementos. Pueden almacenar valores de cualquier tipo de dato, incluso otras listas. Se definen utilizando corchetes [] y se accede a sus elementos mediante índices que comienzan en 0.

Ejemplo:

Python

# Creando una lista de números
numeros = [1, 2, 3, 4, 5]

# Accediendo a un elemento por su índice
primer_numero = numeros[0]  # primer_numero = 1

# Modificando un elemento de la lista
numeros[2] = 10

# Agregando un elemento al final de la lista
numeros.append(6)

# Imprimiendo la lista completa
print(numeros)  # Salida: [1, 2, 10, 4, 5, 6]

2. Tuplas:

Las tuplas son colecciones ordenadas e inmutables de elementos. Similar a las listas, pueden almacenar valores de cualquier tipo de dato. Se definen utilizando paréntesis () y se accede a sus elementos mediante índices. A diferencia de las listas, las tuplas no se pueden modificar después de crearse.

Ejemplo:

Python

# Creando una tupla de nombres
nombres = ("Juan", "María", "Pedro")

# Accediendo a un elemento por su índice
primer_nombre = nombres[0]  # primer_nombre = "Juan"

# Intentando modificar un elemento de la tupla (genera un error)
nombres[0] = "Ana"

# Imprimiendo la tupla completa
print(nombres)  # Salida: ('Juan', 'María', 'Pedro')

3. Diccionarios:

Los diccionarios son colecciones no ordenadas de pares clave-valor. Cada par consta de una clave única que identifica al valor asociado. Se definen utilizando llaves {} y se accede a los valores mediante sus claves.

Ejemplo:

Python

# Creando un diccionario de estudiantes
estudiantes = {"nombre": "Ana", "edad": 25, "carrera": "Ingeniería Informática"}

# Accediendo a un valor por su clave
nombre_estudiante = estudiantes["nombre"]  # nombre_estudiante = "Ana"

# Agregando un nuevo par clave-valor
estudiantes["ciudad"] = "Medellín"

# Imprimiendo el diccionario completo
print(estudiantes)  # Salida: {'nombre': 'Ana', 'edad': 25, 'carrera': 'Ingeniería Informática', 'ciudad': 'Medellín'}

4. Conjuntos:

Los conjuntos son colecciones no ordenadas de elementos únicos. No permiten valores duplicados. Se definen utilizando llaves {} y se accede a sus elementos utilizando métodos como add() y remove().

Ejemplo:

Python

# Creando un conjunto de vocales
vocales = {"a", "e", "i", "o", "u"}

# Verificando si un elemento pertenece al conjunto
esta_en_vocales = "a" in vocales  # esta_en_vocales = True

# Agregando un elemento al conjunto
vocales.add("y")

# Eliminando un elemento del conjunto
vocales.remove("i")

# Imprimiendo el conjunto completo (el orden no está garantizado)
print(vocales)  # Salida: {'a', 'e', 'o', 'u', 'y'}

5. Cadenas de texto:

Las cadenas de texto son secuencias de caracteres. Se representan entre comillas simples (') o comillas dobles ("). Se pueden utilizar para almacenar y manipular texto.

Ejemplo:

Python

# Creando una cadena de texto
frase = "Hola, mundo!"

# Obteniendo la longitud de la cadena
longitud = len(frase)  # longitud = 13

# Accediendo a un carácter por su índice
primer_caracter = frase[0]  # primer_caracter = 'H'

# Modificando un carácter de la cadena
frase[6] = "i"  # frase = "Hola, miundo!"

# Imprimiendo la cadena completa
print(frase)  # Salida: Hola, miundo!

Estructuras de control en Python

Las estructuras de control en Python son bloques de código que permiten controlar el flujo de ejecución del programa en función de condiciones o iteraciones. Son esenciales para crear programas lógicos y organizados que respondan a diferentes situaciones.

Tipos de estructuras de control:

1. Instrucciones condicionales:

Permiten tomar decisiones dentro del programa en función de si se cumple o no una condición. Las estructuras condicionales más comunes son:

  • if: Evalúa una condición y ejecuta un bloque de código si la condición es verdadera. También puede incluir un bloque else para ejecutar código si la condición es falsa.

Python

edad = int(input("¿Cuántos años tienes? "))

if edad >= 18:
    print("Eres mayor de edad.")
else:
    print("Eres menor de edad.")
  • elif: Se utiliza dentro de una instrucción if para evaluar condiciones adicionales. Se pueden incluir múltiples elif para diferentes casos.

Python

calificacion = int(input("¿Cuál fue tu calificación? "))

if calificacion >= 90:
    print("Excelente!")
elif calificacion >= 80:
    print("Muy bien!")
elif calificacion >= 70:
    print("Bien!")
else:
    print("Regular o insuficiente.")

2. Bucles:

Permiten repetir un bloque de código un número determinado de veces o hasta que se cumpla una condición. Los bucles más comunes son:

  • for: Recorre una secuencia de valores y ejecuta un bloque de código para cada elemento.

Python

for numero in range(1, 11):
    print(numero)
  • while: Ejecuta un bloque de código repetidamente mientras se cumpla una condición.

Python

i = 0
while i < 10:
    print(i)
    i += 1

3. Instrucciones de salto:

Permiten modificar el flujo normal del programa de forma controlada. Las instrucciones de salto más comunes son:

  • break: Se utiliza dentro de un bucle para salir de él inmediatamente.
  • continue: Se utiliza dentro de un bucle para omitir la iteración actual y pasar a la siguiente.

Ejemplos de uso de estructuras de control:

  • Crear un menú interactivo: Utilizar if y elif para presentar opciones al usuario y ejecutar código en función de la selección.
  • Procesar listas de datos: Utilizar for para recorrer una lista y realizar operaciones sobre cada elemento.
  • Validar entradas de usuario: Utilizar while para repetir la solicitud de entrada hasta que el usuario proporcione un valor válido.
  • Simular juegos o aplicaciones interactivas: Utilizar estructuras de control para responder a las acciones del usuario y actualizar el estado del juego o aplicación.

¿Qué son las funciones en Python?

Las funciones en Python son bloques de código reutilizables que se utilizan para realizar tareas específicas. Permiten modularizar el código, hacerlo más legible y evitar la duplicación de código.

Estructura de una función:

Python

def nombre_funcion(parámetros):
    """
    Documentación de la función

    Aquí se describe lo que hace la función y cómo se usa.
    """
    # Cuerpo de la función
    código_a_ejecutar
    
    # Opcionalmente, se puede devolver un valor
    return valor_a_devolver

Partes de la estructura:

  • def: Es la palabra clave que indica el inicio de la definición de una función.
  • nombre_funcion: Es el nombre que se le da a la función, el cual debe ser único y seguir las convenciones de nomenclatura de Python.
  • parámetros: Son valores opcionales que se pasan a la función cuando se llama. Se definen entre paréntesis, separados por comas.
  • Documentación: Es una cadena de texto entre comillas triples (""") que describe la función, su propósito y cómo usarla. (Opcional, pero se recomienda).
  • código_a_ejecutar: Es el bloque de código que se ejecuta cuando se llama a la función.
  • return: Es la palabra clave que se utiliza para devolver un valor desde la función. (Opcional).

Ejemplo de una función:

Python

def saludar(nombre):
    """
    Función que saluda a una persona por su nombre.

    Ejemplo de uso:
    saludar("Juan")

    Args:
        nombre (str): El nombre de la persona a quien se va a saludar.

    Returns:
        str: Un mensaje de saludo personalizado.
    """
    mensaje = "Hola, " + nombre + "! ¿Cómo estás?"
    return mensaje

# Llamando a la función
saludo_personalizado = saludar("Ana")
print(saludo_personalizado)  # Salida: Hola, Ana! ¿Cómo estás?

Tipos de funciones:

  • Funciones sin argumentos: No reciben ningún parámetro.
  • Funciones con argumentos obligatorios: Requieren que se les pase un número específico de parámetros.
  • Funciones con argumentos opcionales: Permiten pasar parámetros de forma opcional, utilizando valores predeterminados si no se especifican.
  • Funciones con argumentos con nombre: Permiten pasar parámetros por nombre, lo que facilita la identificación de cada uno.
  • Funciones que devuelven valores: Devuelven un valor que puede ser utilizado por la parte del código que la llama.
  • Funciones que no devuelven valores: No devuelven ningún valor y se utilizan principalmente para realizar acciones.

Alcance de las variables:

  • Las variables definidas dentro de una función solo son accesibles dentro de esa función.
  • Las variables definidas fuera de una función (variables globales) son accesibles desde cualquier lugar del programa, incluyendo dentro de las funciones.
  • Para modificar una variable global desde una función, se debe utilizar la palabra clave global antes del nombre de la variable.

Consejos para usar funciones:

  • Utilice funciones para encapsular tareas repetitivas.
  • Dé nombres descriptivos a sus funciones.
  • Documente sus funciones para explicar su propósito y uso.
  • Utilice argumentos para pasar información a las funciones.
  • Devuelva valores desde las funciones cuando sea necesario.
  • Evite crear funciones demasiado grandes o complejas.

Las clases en Python: Creando objetos orientados a objetos

En la programación orientada a objetos (POO), las clases son los elementos fundamentales para crear estructuras de código reutilizables y modulares. En Python, las clases se definen utilizando la palabra clave class seguida del nombre de la clase.

Estructura de una clase:

Python

class NombreClase:
    """
    Documentación de la clase

    Aquí se describe la clase, su propósito y las funcionalidades que ofrece.
    """

    # Atributos de clase (variables compartidas por todas las instancias)
    variable_clase = "Valor por defecto"

    # Método constructor (se ejecuta al crear una instancia)
    def __init__(self, parametro1, parametro2):
        """
        Método constructor de la clase.

        Se utiliza para inicializar los atributos de la instancia.

        Args:
            parametro1 (tipo): Descripción del primer parámetro.
            parametro2 (tipo): Descripción del segundo parámetro.
        """
        self.parametro1 = parametro1
        self.parametro2 = parametro2

    # Métodos de instancia (funciones asociadas a las instancias)
    def metodo_instancia(self, parametro3):
        """
        Método de instancia de la clase.

        Se utiliza para realizar acciones específicas sobre la instancia.

        Args:
            parametro3 (tipo): Descripción del parámetro del método.

        Returns:
            tipo: Valor de retorno del método.
        """
        resultado = self.parametro1 + self.parametro2 + parametro3
        return resultado

# Ejemplo de uso de la clase
instancia = NombreClase("Argumento 1", "Argumento 2")

# Accediendo a un atributo de clase
print(instancia.variable_clase)  # Salida: Valor por defecto

# Accediendo a un atributo de instancia
print(instancia.parametro1)  # Salida: Argumento 1

# Llamando a un método de instancia
resultado = instancia.metodo_instancia("Argumento 3")
print(resultado)  # Salida: 6 (Argumento 1 + Argumento 2 + Argumento 3)

Características de las clases:

  • Encapsulación: Los atributos y métodos de una clase se encuentran agrupados y ocultos al exterior, protegiendo su integridad y permitiendo un mejor control de acceso.
  • Herencia: Las clases pueden heredar atributos y métodos de otras clases, permitiendo la reutilización de código y la creación de jerarquías de clases.
  • Polimorfismo: Los métodos con el mismo nombre en diferentes clases pueden tener implementaciones distintas, permitiendo un comportamiento adaptable según el tipo de objeto.

Beneficios de usar clases:

  • Modularidad: El código se organiza en bloques independientes y reutilizables, mejorando la legibilidad y el mantenimiento.
  • Reutilización: Se evita la duplicación de código, lo que ahorra tiempo y reduce errores.
  • Flexibilidad: Las clases permiten crear estructuras de código adaptables a diferentes necesidades y escenarios.
  • Escalabilidad: Los programas basados en clases pueden crecer y adaptarse fácilmente a nuevos requerimientos.

Ejemplos de uso de clases en Python:

  • Creación de modelos de datos: Las clases pueden representar entidades del mundo real, como personas, productos, animales, etc.
  • Desarrollo de aplicaciones web: Las clases se utilizan para crear modelos de vista-controlador, formularios, autenticación de usuarios, etc.
  • Simulación de sistemas: Las clases permiten modelar el comportamiento de sistemas complejos, como sistemas físicos, redes de computadoras, etc.
  • Juegos y aplicaciones interactivas: Las clases se utilizan para crear objetos que interactúan entre sí y con el usuario, creando experiencias dinámicas.
Este contenido ha sido generado con la ayuda de Gemini y supervisado por un mono digital.