Identificar código y salidas

Para hacer más fácil la identificación de los diferentes códigos que se usarán en la página, se emplearán los siguientes colores en las ventanas de código.

Para el código presentado en Python se empleará un fondo de color rojo tal como se presenta a continuación.

'Ejemplo código Python'

Mientas que, para los resultados o salidas obtenidas en Python se empleará un fondo de color gris, tal como se presenta a continuación.

'Ejemplo código de salida'

Palabras reservadas

El lenguaje Python posee una serie de palabras reservadas que no permite que sean modificadas debido a que éstas poseen atributos especiales dentro del lenguaje de programación, y por ello, sus nombres no pueden ser usados como nombre de variables, funciones, etc.

El listado de palabras reservadas en el lenguaje Python son.

False True None and as
assert async await break class
continue def del elif else
except finally for from global
if import in is lambda
nonlocal not or pass raise
return try while with yield

en donde

  • False, True: Son carácteres especiales para indicar constantes lógicas.
  • None: Es un carácter especial que representa la ausencia de un valor o un valor nulo.
  • and, or, not: Son carácteres especial que representa operadores lógicos.
  • await, async: Son funciones que se usan para definir corutinas.
  • as: Es un carácter especial que se usa para crear un alias al importar un módulo.
  • assert: Es un carácter especial que emplea con fines de depuración.
  • if, else, elif, for, break, continue, while: Son carácteres especial usadas en loops, condicionales y funciones.
  • def: Es un función usada para definir funciones
  • del: Es una función usada para eliminar un objeto.
  • class: Es una función usada para definir una nueva clase.
  • except, raise, try, finally: Son carácteres especiales que se usan para intentar realizar operaciones, establecer excepciones o o cerrar recursos.
  • from, import: Son funciones que se usan para importar módulos.
  • global, nonlocal Es una función que se usa para establecer variables dentro de funciones, en el entorno global, o por fuera de funciones anidadas.
  • in, is: Son carácteres especiales que se emplean para hacer comparaciones o probar si hay elementos dentro de objetos.
  • lambda: Es una función que se usa para crear una función anónima (función sin nombre).
  • pass: Es una función que se usa como un indicador de posición, no pasa nada cuando se ejecuta.
  • return, yield: Son funciones que se emplean para presentar los resultados o salidas que hay dentro de una función.
  • with: Es una función para ajustar la ejecución de un bloque de código.

Estas también pueden ser consultadas en Python mediante el código

import keyword
keyword.kwlist

Estructura de asignación

Generalmente cuando se trabaja en programación, se desea que el programa recuerde ciertos valores para usarlos más adelante, y por ello, la idea de esta sección es explicar los métodos de asignación de objetos.

La estructura de asignación en el lenguaje Python puede llevarse a cabo mediante cuatro formas diferentes, donde, cada una de ellas lleva al mismo resultado

variable = expresión # Método de asignación

en donde, la expresión que se desea guardar siempre debe estar a la derecha del signo =. mientras la variable en donde se desea guardar el valor resultante debe estar a la izquierda del símbolo =.

Es de anotar que, el carácter #, se emplea para comentar el código o una línea específica, lo cual implica que posterior a #, no se ejecutará ningún tipo de código en la linea específica en la cual se encuentre #.

Ayuda sobre funciones

En muchas situaciones, podemos conocer la función que deseamos emplear pero no sabemos con exactitud cuales son los argumentos o el significado de los mismos, lo cual hace que no podamos usar adecuadamente la función de interés.

Es por ello que Python posee información, sobre las funciones que pueden emplearse en los lenguajes de programación, mostrando los diferentes argumentos que posee, su significado, los valores que pueden extraerse de la función y ejemplos sobre su empleo.

En donde para obtener información concreta sobre una función o carácter en Python, debe emplearse la función help(). Para ilustrar dichos métodos, empleamos la función abs() y el carácter +, para consultar su ventana de ayuda.

help("+")     # Primer método
?abs           # Segundo método

Operadores aritméticos y precedencias

Existen diferentes operadores aritméticos que pueden emplearse en los lenguajes de programación. Estos se resumen en la siguiente tabla.

Operación Operador en Python Asociatividad Precedencia
Potencia ** Por la derecha 1
Producto * Por la izquierda 2
División / Por la izquierda 2
División Entera // Por la izquierda 2
Módulo o Resto % Por la izquierda 2
Suma + Por la izquierda 3
Resta - Por la izquierda 3

Operadores lógicos

También es posible que se quieran realizar operaciones lógicas entre objetos cuando se realiza programación en los diferentes lenguajes, ya sea para establecer condicionales, o para hacer algunas verificaciones. Estos se resumen en la siguiente tabla.

Operación Operador en Python Precedencia
Igual que == 4
Distinto que != 4
Menor que < 4
Menor o igual que <= 4
Mayor que > 4
Mayor o igual que >= 4
Negación not 5
Conjunción and 6
Disyunción or 7

Funciones matemáticas

Hay una gran variedad de funciones matemáticas que suelen usarse en la práctica, y es por ello que se listan las funciones aritméticas que suelen emplearse comunmente por lenguaje de programación. Estos se resumen en la siguiente tabla.

Operación Operador en Python
Valor absoluto abs()
Raíz cuadrada math.sqrt()
Redondear round()
Techo math.floor()
Piso math.ceil()
Exponencial math.exp()
Logaritmo math.log()
Factorial math.factorial()
Gamma math.gamma()
Seno math.sin()
Coseno math.cos()
Tangente math.tan()

Operadores matriciales básicas

Existen diferentes operadores matriciales que pueden emplearse en los lenguajes de programación. Estos se resumen en la siguiente tabla.

Operación Operador en Python
Suma A+B
Resta A-B
Elementos por Elemento A*B
Multiplicación Matricial numpy.dot(A,B)
Trasponer numpy.transpose(A)
Diagonal numpy.diag(A)
Inversa numpy.linalg.inv(A)
Determinante numpy.linalg.det(A)

Tipo de datos

Existen diferentes tipos de datos en los lenguajes de programación, de estos tipos dependerá las operaciones o funciones que pueden o no emplearse con éstos, y es por ello que debe tenerse especial cuidado cuando se deseen manipular.

Los tipos de datos más que pueden encontrarse en Python son:

  • integer: Datos enteros, los cuales soportan números que se encuentren en el conjunto de los enteros, $\mathbb{Z}$, y en consecuencia, solo soporta números enteros.
  • float: Datos númericos, los cuales soportan números que se encuentren en el conjunto de los reales, $\mathbb{R}$, y por tanto soporta tanto números enteros (integer) y números de doble presición (double).
  • complex: Datos complejos, los cuales soportan números que se encuentren en el conjunto de los complejos, $\mathbb{C}$, y por tanto, soporta tanto números reales como imaginarios.
  • string: Datos de carácter, los cuales soportan uno o más carácteres alfanuméricos, es decir, datos numéricos y alfabéticos. Éstos deben ser escritos entre comillas simples, dobles o triples.
  • boolean: Datos lógicos, los cuales soportan carácteres lógicos tales como True o False.

Para verificar el tipo de almacenamiento en Python, puede emplearse la función type()

A continuación se presenta un ejemplo en donde se muestran los diferentes tipos de objetos en Python

Dato tipo entero

# Integer
a = 55
type(a)
<class 'int'>

Dato tipo flotante

# Float
b = 3.3 
type(b)
<class 'float'>

Dato tipo complejo

# Complex
c = 6+4j
type(c)
<class 'complex'>

Dato tipo carácter

# String
d = "hello"
type(d)
<class 'str'>

Dato tipo booleano

# Boolean
e = True
type(e)
<class 'bool'>

Estructura de datos

La idea de esta sección es resumir las estructuras básicas más importantes que puede tener un conjunto de datos en Python, debido a que éstas permiten la manipulación de datos. Algunas de las estructuras más usadas se encuentran dentro del entorno base de Python, mientras que otras provinientes de modulos externos.

Entre las estructuras de datos que pueden construirse con la base de Python tenemos

  • Listas: Permite construir una colección ordenada de uno o más datos númericos, alfanuméricos o lógicos, mutables (es decir que se pueden modificar). Para establecer estructuras de tipo lista, deben emplearse corchetes, [], o la función list().

A continuación se presenta un ejemplo en donde se muestra como construir una lista para diferentes tipos de datos en Python

ListA = [1, 13.7, -3-2j, 21, 2j] # Numeric
ListA
[1, 13.7, (-3-2j), 21, 2j]
ListB = ["a", "c", "a", "b", "c", "a"]  # String
ListB
['a', 'c', 'a', 'b', 'c', 'a']
ListC = [False, True, None, False, True, False]  # Boolean
ListC
[False, True, None, False, True, False]
  • Tuplas: Permite construir una colección ordenada de uno o más datos númericos, alfanuméricos o lógicos, inmutables (es decir que no se pueden modificar). Para establecer estructuras de tipo tupla, deben emplearse parentesis, (), o la función tuple().

A continuación se presenta un ejemplo en donde se muestra como construir una tupla para diferentes tipos de datos en Python

TuplA = (1, 13.7, -3-2j, 21, 2j) # Numeric
TuplA
(1, 13.7, (-3-2j), 21, 2j)
TuplB = ("a", "c", "a", "b", "c", "a")  # String
TuplB
('a', 'c', 'a', 'b', 'c', 'a')
TuplC = (False, True, None, False, True, False)  # Boolean
TuplC
(False, True, None, False, True, False)
  • Diccionarios: Permite agregar una colección de uno o más datos en pares, que pueden ser númericos, alfanuméricos o lógicos, con el fin de asociar “claves” (nombres) a “valores” (detalles). Una colección de tales pares está encerrada entre llaves {}, separando las claves y los valores mediante dos puntos :.

A continuación se presenta un ejemplo en donde se muestra como construir un diccionario para diferentes tipos de datos en Python

DictA = {"Primera": 1, "Segunda":13.7, "Tercera":-3-2j, "Cuarta":21, "Quinta":2j} # Numeric
DictA
{'Primera': 1, 'Segunda': 13.7, 'Tercera': (-3-2j), 'Cuarta': 21, 'Quinta': 2j}
DictB = {"Uno":"a", "Dos":"c", "Tres":"a", "Cuatro":"b", "Cinco":"c"}  # String
DictB
{'Uno': 'a', 'Dos': 'c', 'Tres': 'a', 'Cuatro': 'b', 'Cinco': 'c'}
DictC = {"D:":False, ":o":True, ">:c":None, ":D":False, ":c":True, ":|":False}  # Boolean
DictC
{'D:': False, ':o': True, '>:c': None, ':D': False, ':c': True, ':|': False}
  • Conjuntos: Permite construir una colección desordenada de uno o más datos númericos, alfanuméricos o lógicos, similares y se suele usar cuando solo interesa que el objeto se encuentre en una colección y realmente no importa la posición en la que se encuentre, ni cuantas veces ocurra. Para establecer estructuras de tipo conjunto, deben emplearse la función set([]).

A continuación se presenta un ejemplo en donde se muestra como construir un conjunto para diferentes tipos de datos en Python

SetA = set([12, 12, -3-2j, 21, 2j, 12]) # Numeric
SetA
{12, 21, 2j, (-3-2j)}
SetB = set(["a", "c", "a", "b", "c", "a"])  # String
SetB
{'a', 'b', 'c'}
SetC =  set([False, True, None, False, True, False])  # Boolean
SetC
{False, True, None}

Módulo numpy

Adicionalmente, se poseen otras estructuras básicas que pueden ser de nuestro interés, las cuales se pueden encontrar en el módulo numpy. Este paquete posee una gran variedad de funciones matemáticas para realizar computación científica, y ofrece gran soporte para un objetos de matriciales $N$-dimensionales.

Para importar el módulo numpy puede emplearse cualquiera de las dos lineas de código

import numpy # Cargar módulo
import numpy as np # Cargar y establecer nombre al módulo
  • Arreglos: Permite crear arreglos númericos. Puede construirse mediante la función numpy.array([]), mediante la función np.array([]) en caso de establecer el nombre nd al módulo, o simplemente array([]) si se importa solo la función.
from numpy import array # importa función array del módulo

A continuación se presenta un ejemplo en donde se muestra como construir un arreglo numérico para diferentes tipos de datos en Python

ArrA = numpy.array([12, 2, 21, 2, 13]) # Integer
ArrA
array([12,  2, 21,  2, 13])
ArrB = np.array([[3.2, 1.7], [8.0, -12.2], [2.3, 3]]) # Float
ArrB
array([[  3.2,   1.7],
       [  8. , -12.2],
       [  2.3,   3. ]])
ArrC = array([[1-0j, 2j, 2], [5, 5.3+2.8j,2.2j]]) # Complex
print(ArrC)
[[1. +0.j  0. +2.j  2. +0.j ]
 [5. +0.j  5.3+2.8j 0. +2.2j]]
  • Matriz: Permite crear matrices númericas. Puede construirse mediante la función numpy.matrix([]), mediante la función np.matrix([]) en caso de establecer nombre al módulo, o simplemente matrix([]) si se importa solo la función.
from numpy import matrix # Importa función matrix del módulo

A continuación se presenta un ejemplo en donde se muestra como construir un arreglo numérico para diferentes tipos de datos en Python

MatA = numpy.matrix([12, 2, 21, 2, 13]) # Integer
MatA
matrix([[12,  2, 21,  2, 13]])
MatB = np.matrix([[3.2, 1.7], [8.0, -12.2], [2.3, 3]]) # Float
MatB
matrix([[  3.2,   1.7],
        [  8. , -12.2],
        [  2.3,   3. ]])
MatC = matrix([[1-0j, 2j, 2], [5, 5.3+2.8j,2.2j]]) # Complex
print(MatC)
[[1. +0.j  0. +2.j  2. +0.j ]
 [5. +0.j  5.3+2.8j 0. +2.2j]]

Módulo pandas

Otro módulo de interés, que posee otra estructura básica que pueden ser de nuestro interés, es el módulo pandas, la cual permite construir marcos de datos.

Para importar el módulo pandas puede emplearse cualquiera de las dos lineas de código

import pandas # Cargar módulo
import pandas as pd # Cargar y establecer nombre al módulo
  • Dataframe: Permite crear marcos de datos, que pueden contener simultaneamente diferentes tipos de datos, numéricos, carácteres o booleanos. Puede construirse mediante la función pandas.DataFrame(), o mediante la función pd.DataFrame() en caso de establecer el nombre pd al módulo.
from pandas import DataFrame # Importa función matrix del módulo

A continuación se presenta un ejemplo en donde se muestra como construir un dataframes de datos en Python

DatfA = pd.DataFrame([ListB, ListA, ListC])
DatfA
       0     1        2      3     4      5
0      a     c        a      b     c      a
1      1  13.7  (-3-2j)     21    2j   None
2  False  True     None  False  True  False
datos = {'Nombre':['Susana', 'Fredy', 'Santiago', 'Natalia'],
        'Edad':[22, 32, 22, 19],
        'Carrera':['Industrial', 'Industrial', 'Industrial', 'Economía']}
DatfB = DataFrame(datos)
DatfB
     Nombre  Edad     Carrera
0    Susana    22  Industrial
1     Fredy    32  Industrial
2  Santiago    22  Industrial
3   Natalia    19    Economía

Coerción de datos

Muchas veces cuando tenemos una variable, puede que esta no tenga almacenados los datos bajo el tipo que queremos tenerlo realmente, por ello, existen en los lenguajes de programación funciones de coercionar que permiten redefinir un objeto, para transformarlo al tipo que necesitamos.

Coerción de datos en Python

Para convertir una variable de un tipo a otro, existen una serie de funciones básicas en Python que permiten hacer dicho procedimiento, estas funciones son

  • int(): Convierte una variable numérica o carácter numérico a tipo entero (integer).
  • float(): Convierte una variable numérica o carácter numérico a tipo flotante (float).
  • complex(real,imag): Convierte una variable numérica o carácter numérico de tamaño uno o dos a tipo complejo (complex).
  • str(): Convierte una variable a tipo carácter (string).
  • list(): Convierte una variable a tipo lista (list).
  • tuple(): Convierte una variable a tipo tupla (tuple).
  • dict(key,value): Convierte una variable a tipo lista o tupla de tamaño dos a tipo diccionario (dictionary).
  • set(): Convierte una variable a tipo numérica, carácter, lista, tupla, diccionario a tipo conjunto (set).