Python Puro.
Python Puro.
● Sintaxis básica
● Variables y tipos de datos
● Condicionales
● Tipo de conversión, excepciones
● Funciones, funciones integradas
● Lista, tuplas, conjuntos, diccionarios
En Python, escribirías:
2. Comentarios: los comentarios son textos que no se ejecuta y se utilizan
para explicar el código o para deshabilitar temporalmente una parte del
mismo. En Python, se pueden crear comentarios con el signo numeral (#).
Por ejemplo:
Por ejemplo:
Por ejemplo:
Variables y tipos de datos:
Variables:
Tipos de datos:
Por ejemplo:
Condicionales:
● IF:
Por ejemplo:
● ELSE:
Por ejemplo:
● ELIF:
● OPERADORES LÓGICOS:
Por ejemplo:
● CONVERSIONES Y EXCEPCIONES:
● Conversión de tipos:
En Python, se pueden convertir los datos de un tipo a otro utilizando
funciones incorporadas en el lenguaje. Algunas de las funciones de
conversión de tipo más comunes son:
Por ejemplo:
● Excepciones:
Por ejemplo:
En Python, las funciones son bloques de código reutilizables que realizan una
tarea específica. Las funciones se definen mediante la palabra clave "def"
seguida del nombre de la función y los parámetros que recibe, si los tiene. Aquí
te explico cómo funcionan:
En este ejemplo, se define una función llamada "mi_funcion" que recibe dos
parámetros, "parametro_1" y "parametro_2". La función realiza una tarea (en este
caso, suma los dos parámetros) y devuelve el resultado mediante la palabra
clave "return"
En este ejemplo, se utiliza la función "input" para solicitar al usuario que ingrese
su nombre por teclado, la función "print" para mostrar un mensaje por pantalla, la
función "len" para obtener la longitud de una lista, la función "range" para generar
una secuencia de números enteros, y las funciones "str" e "int" para convertir
valores de un tipo a otro.
● Listas:
Las listas son una colección ordenada de elementos que se pueden modificar.
Se definen utilizando corchetes [] y separando los elementos con comas. Los
elementos pueden ser de cualquier tipo de dato, incluyendo otras listas.
Para acceder a los elementos de una lista, se utiliza su índice (posición) dentro
de la lista. Los índices empiezan en 0 para el primer elemento.
● Tuplas:
Las tuplas son similares a las listas, pero son inmutables, lo que significa que
una vez creadas no se pueden modificar. Se definen utilizando paréntesis () y
separando los elementos con comas.
Para acceder a los elementos de una tupla, se utiliza el mismo método que para
las listas: su índice.
● Conjuntos:
● Diccionarios:
Los diccionarios son una colección de pares clave-valor, donde cada clave se
asocia con un valor. Se definen utilizando llaves {} y separando los pares
clave-valor con comas y dos puntos (:).
Para acceder a los elementos de una matriz, se utilizan dos índices: el primero
para indicar la fila y el segundo para indicar la columna.
Para recorrer todos los elementos de una matriz, se pueden utilizar dos bucles
anidados
Las listas enlazadas son una estructura de datos más compleja, que se utiliza
para representar datos que están interconectados de manera no lineal. Cada
elemento de la lista enlazada se llama nodo, y contiene un valor y un puntero al
siguiente nodo de la lista. El último nodo de la lista apunta a None (o Null),
indicando el final de la lista.
En Python, se puede crear una lista enlazada utilizando clases y objetos. Por
ejemplo, para crear una lista enlazada de tres nodos:
En este ejemplo, se definió la clase Nodo, que tiene dos atributos: valor (que
contiene el valor del nodo) y siguiente (que apunta al siguiente nodo de la lista).
Luego se crearon tres nodos y se conectaron entre sí mediante los punteros
"siguiente".
Para recorrer una lista enlazada, se puede utilizar un bucle mientras el puntero
"siguiente" no sea None.
En este ejemplo, se define una variable "nodo_actual" que se inicializa con el
primer nodo de la lista. Luego, se utiliza un bucle para recorrer los nodos de la
lista mientras "nodo_actual" no sea None. En cada iteración del bucle, se
imprime el valor del nodo actual y se actualiza la variable "nodo_actual" para
apuntar al siguiente nodo de la lista.
Heaps:
Stacks:
Una stack (o pila) es una estructura de datos que se utiliza para almacenar
elementos de manera que el último elemento agregado es el primero en ser
eliminado. Esto se conoce como el principio LIFO (Last-In, First-Out). Las
operaciones básicas en una stack son push (para agregar un elemento) y pop
(para eliminar el último elemento agregado).
En Python, se puede implementar una stack utilizando una lista y las funciones
append y pop.
Queues:
Una queue (o cola) es una estructura de datos que se utiliza para almacenar
elementos de manera que el primer elemento agregado es el primero en ser
eliminado. Esto se conoce como el principio FIFO (First-In, First-Out). Las
operaciones básicas en una queue son enqueue (para agregar un elemento) y
dequeue (para eliminar el primer elemento agregado).
En Python, se puede implementar una queue utilizando una lista y las funciones
append y pop(0).
Tablas hash:
Las tablas hash (también conocidas como hash tables, mapas hash o
diccionarios) son estructuras de datos que se utilizan para almacenar y buscar
elementos de manera eficiente. En una tabla hash, los elementos se almacenan
en posiciones específicas de una tabla, que se calculan a partir de una función
de hash.
La función de hash toma una clave como entrada y devuelve un número entero,
que se utiliza para calcular la posición en la que se debe almacenar el elemento
en la tabla. Cada posición en la tabla se conoce como un "bucket" (o cubeta) y
puede contener uno o varios elementos. La función de hash debe ser diseñada
para minimizar las colisiones (es decir, cuando dos elementos tienen la misma
posición de almacenamiento), para que la búsqueda sea lo más eficiente
posible.
Un árbol de búsqueda binaria (BST, por sus siglas en inglés) es una estructura de
datos en forma de árbol que se utiliza para almacenar elementos de manera
ordenada y permitir búsquedas eficientes. En un BST, cada nodo del árbol
contiene un valor y tiene dos hijos (o ninguno), que son llamados subárboles
izquierdo y derecho. Además, para cualquier nodo en el árbol, todos los valores
en el subárbol izquierdo son menores que el valor del nodo, y todos los valores
en el subárbol derecho son mayores.
En este árbol, el nodo raíz contiene el valor 7, el subárbol izquierdo contiene los
valores 1, 3 y 5, y el subárbol derecho contiene los valores 9, 11 y 13.
En este ejemplo, se define una clase Node que representa un nodo en el árbol.
Cada nodo tiene un valor (data), y puede tener un hijo izquierdo (left) y/o un hijo
derecho (right).
A continuación el ejemplo:
Recursividad:
Por ejemplo:
Por ejemplo:
Por ejemplo:
Por ejemplo:
Por ejemplo:
# Entrenar
● iteradores
● RegEx
● Decoradores
● Lambas
Iteradores:
Este código imprimirá los cuadrados de los números del 1 al 5. En este caso,
map() recorre el iterador mi_lista y aplica la función cuadrado() a cada elemento,
devolviendo un iterador con los resultados. Luego, el bucle for recorre este
iterador e imprime cada resultado.
RegEx:
En este ejemplo, utilizamos la expresión regular \b[a-zA-Z]+\b para buscar todas las
palabras en la cadena de texto texto. La expresión regular se compone de los
siguientes elementos:
En este caso, se imprime la lista ['Este', 'es', 'un', 'ejemplo', 'de', 'texto', 'con', 'varias', 'palabras'].
Estos son solo algunos ejemplos básicos de cómo utilizar expresiones regulares
en Python. Hay muchos otros patrones y funciones disponibles en el módulo re, y
las expresiones regulares pueden llegar a ser muy complejas y poderosas.
Decoradores:
Las lambdas en Python son funciones anónimas, lo que significa que no tienen
un nombre. Se utilizan para crear funciones pequeñas y simples que se utilizan
sólo en un lugar. Las lambdas se definen utilizando la palabra clave lambda,
seguida de los argumentos de la función separados por comas y luego una
expresión que se evalúa y devuelve el resultado de la función.
Por ejemplo, podemos definir una función lambda que tome dos argumentos y
devuelva su suma:
Otro ejemplo es utilizar una lambda junto con la función sorted() para ordenar una
lista de tuplas por el segundo elemento de cada tupla:
En este ejemplo, utilizamos la función sorted() para ordenar la lista personas por el
segundo elemento de cada tupla. Pasamos una lambda que toma una tupla x y
devuelve su segundo elemento x[1], que es el que se utiliza para ordenar la lista.
OOP:
● Clases
● Herencia
● Métodos, dunder
Clases:
Para definir una clase en Python, se utiliza la palabra clave class, seguida del
nombre de la clase y dos puntos. Dentro de la clase, se pueden definir atributos y
métodos utilizando la sintaxis normal de Python. Por ejemplo, aquí hay una clase
Persona simple con un atributo nombre y un método saludar:
Las clases pueden tener múltiples atributos y métodos, y pueden interactuar con
otros objetos de la misma clase o de clases diferentes. Las clases son una
herramienta poderosa y fundamental en la programación orientada a objetos, y
permiten crear programas más estructurados y modulares.
Herencia:
Aquí hay un ejemplo de una clase Empleado que tiene dos subclases: Programador y
Gerente. La clase Programador hereda los atributos y métodos de la clase Empleado, y
agrega un atributo lenguaje y un método programar. La clase Gerente también hereda
los atributos y métodos de la clase Empleado, pero sobrescribe el método salario
para agregar un bono adicional.
En este ejemplo, la clase Programador hereda los atributos y métodos de la
clase Empleado, y agrega un atributo lenguaje y un método programar. El método
__init__ de la subclase llama al método __init__ de la superclase utilizando la
función super(), y luego agrega el atributo lenguaje. El método programar es un
método adicional que imprime un mensaje que indica que el programador está
programando en un lenguaje específico.
La clase Gerente también hereda los atributos y métodos de la clase Empleado, pero
sobrescribe el método salario para agregar un bono adicional. El método __init__ de
la subclase llama al método __init__ de la superclase utilizando la función super(), y
luego agrega el atributo bono. El método salario es un método sobrescrito que
devuelve el salario base más el bono adicional. Estos ejemplos son solo una
introducción a la herencia en Python. La herencia es una herramienta poderosa y
versátil que permite a los programadores crear jerarquías de clases complejas y
reutilizar código de manera efectiva.
Métodos, dunder:
Los métodos son funciones que se definen dentro de una clase y son utilizados
para manipular los atributos de los objetos de esa clase. Estos métodos pueden
ser llamados por cualquier objeto de la clase y pueden realizar cualquier acción
necesaria en los atributos del objeto.
Por otro lado, los métodos "dunder" (del inglés "double underscore") son
métodos especiales que tienen un doble guión bajo al inicio y al final de su
nombre. Estos métodos son utilizados para definir comportamientos especiales
en las clases, como la comparación entre objetos o la representación en forma
de cadena de un objeto.
Módulos:
● Incorporado(builtin)
● Costumbre(custom)
Módulos builtin:
Paquetes:
● PyPI
● Pip
● Conda
PyPI:
Estos son solo algunos ejemplos de los muchos paquetes útiles disponibles en
PyPI. Al utilizar estos paquetes, los programadores pueden ahorrar tiempo y
esfuerzo al no tener que escribir código personalizado para funcionalidades
comunes y pueden aprovechar la experiencia y el conocimiento de otros
desarrolladores en la comunidad de Python.
Pip:
Pip es una herramienta muy útil para trabajar con paquetes de Python y sus
dependencias, y se utiliza ampliamente en la comunidad de Python. Al usar pip,
los programadores pueden instalar rápidamente paquetes de Python,
mantenerlos actualizados y eliminarlos si ya no son necesarios.
Conda:
Conda es una herramienta muy útil para trabajar con paquetes de Python y sus
dependencias, y se utiliza ampliamente en la comunidad de Python,
especialmente para proyectos de ciencia de datos y aprendizaje automático. Al
utilizar Conda, los programadores pueden crear fácilmente entornos de trabajo
separados y gestionar sus paquetes de software de forma eficiente.
Temas avanzados
● Lista de comprensiones
● Generador de expresiones
● Paradigmas
Lista de comprensiones:
Las listas de comprensión son una forma concisa de crear una nueva lista a
partir de otra lista existente. Las listas de comprensión se componen de una
expresión, seguida de uno o más ciclos for, y opcionalmente una o más
condiciones if.
numbers = [1, 2, 3]
colors = ['red', 'green', 'blue']
pairs = [(number, color) for number in numbers for color in colors]
print(pairs) # Output: [(1, 'red'), (1, 'green'), (1, 'blue'), (2, 'red'), (2, 'green'), (2, 'blue'),
(3, 'red'), (3, 'green'), (3, 'blue')]
Las listas de comprensión son una forma elegante y eficiente de crear nuevas
listas a partir de listas existentes. Al utilizar las listas de comprensión, se puede
reducir el número de líneas de código necesarias para realizar una operación y
hacer que el código sea más fácil de leer y entender.
Generador de expresiones:
La salida será:
En este ejemplo, la expresión (x for x in range(20) if x % 2 == 0) genera los primeros 10
números pares del rango de 0 a 19. El generador de expresiones se almacena en
la variable gen, que se utiliza en un ciclo for para imprimir cada valor generado
uno a la vez.
Paradigmas:
Learn a framework
● Flask
● Django
● Doctest
● nose
● pytest
● unittest/pyUnit