Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manejo de Errores
Sets
Son una estructura de datos usada para almacenar elementos de una manera similar a las listas, pero con ciertas
diferencias.
Un conjunto es una colección desordenada , inmutable * y no indexada. Los elementos establecidos no se pueden
modificar, pero se puede eliminar elementos y agregar elementos nuevos.
Los sets se los trata como conjuntos numéricos
# Manera implícita
set_string = set("Hoola")
print(set_string) # {'H', 'o', 'l', 'a'}
Modificando conjuntos
En esta clase solo se ven métodos.
intersection(set): Realiza la operacion “intersection” entre dos conjuntos. La intersección entre dos conjuntos es
tomar unicamente los elementos en común de los conjutnos. Esta operación tambien se puede realizar con el
signo “&”: set_a & set_b.
difference(set): Realiza la operacion “difference” entre dos conjuntos. La diferencia entre dos conjuntos es restar
los elementos del segundo conjunto al primero. Esta operación tambien se puede realizar con el signo “-”: set_a -
set_b.
NOTA: No se pueden realizar operaciones con otras colecciones de datos, solo se puede únicamente entre
conjuntos.
List Comprehension
Es una lista que tiene por contenido una operación en vez de una lista de conjuntos, y estas operaciones se realizan
con un for para poder iterar y sacar los datos de la lista
Estructura: [element for element in iterable]
Dictionary Comprehension
Estructura: {Key:value for var in iterable}
# Dictionary Comprehension
dict2 = {i: i * 2 for i in range(1,11)}
print(dict2) # {1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 17, 9: 18, 10: 20}
import random
countries = ['col', 'mex', 'bol', 'pe']
print(list(zip(names, ages)))
# zip() toma valor a valor en cada lista, los une en tuplas, y los pone como elementos de un array
# list() debemos ponerlo para transformalo a lista sino sale algo raro
# Resultado: [{'nico', 12}, {'zule', 56}, {'santi', 98}]
import random
countryies = ['col', 'mex', 'bol', 'pe']
population_v2 = { country: random.randint(1,100) for country in countries }
Funciones
Una función es un bloque de código que solo se ejecuta cuando se le llama.
Puede pasar datos, conocidos como parámetros, a una función.
Una función puede devolver datos como resultado.
def suma(a,b):
total = a + b
return total
sumatoria = suma(5,9)
print(sumatoria) # 14
Pero si inicializamos variables en el mismo orden en el que se retornan los valores. Se guardaran individualmente en
ese orden
print(result) # 10
print(width) # 10
print(text) # 'hola'
El scope
Scope o Alcance, es cuando una variable solo esta disponible desde donde fue construida y para ello existen dos
ambitos, el local y el global.
Scope Local
Cuando una variable es construida dentro de una función pertenece al ámbito local de esa función y solo se puede
usar dentro de esa función.
Scope Global
A diferencia del Scope Local, el Scope Global esta creada en la parte externa de la función y esta puede ser utilizada
tanto de manera global como local.
def increment(x):
return x + 1
increment_v2 = lambda x : x + 1
result = increment_v2(20)
print(result)
Propiedades de HOF
Una función es una instancia de tipo objeto.
def increment(x):
return x + 1
result = high_ord_func(2, increment) # Para pasar la función como argumento no se ponen parentesis
# Forma 1
high_ord_func_v2 = lambda x, func: x + func(x)
result = high_ord_func_v2(2, increment_v2)
# Forma 2
result = high_ord_func_v3(2, lambda x: x + 2)
numbers = [1, 2, 3, 4]
numbers_v2 = []
for i in numbers:
numbers_v2.append(i * 2)
numbers1 = [1, 2, 3, 4]
numbers2 = [5, 6, 7, 8]
def add_taxes(item):
item['taxes'] = item['price'] * 0.19
return item
items = [
{
'product':'camisa',
'price':100
},
{
'product':'pantalon',
'price':300
},
{
'product':'vestido',
'price':150
},
{
'product':'chaqueta',
'price':400
}
]
print('Old list')
print(items)
--> Old list
[{'product': 'camisa', 'price': 100},
{'product': 'pantalon', 'price': 300},
{'product': 'vestido', 'price': 150},
{'product': 'chaqueta', 'price': 400}]
Filter
La función filter() devuelve un iterable donde los elementos se filtran a través de una función para probar si el
elemento se acepta o no.
Sintaxis: filter(function, iterable)
matches = [
{
'home_team': 'Bolivia',
'away_team': 'Uruguay',
'home_team_score': 3,
'away_team_score': 1,
'home_team_result': 'Win'
},
{
'home_team': 'Brazil',
'away_team': 'Mexico',
'home_team_score': 1,
'away_team_score': 1,
'home_team_result': 'Draw'
},
{
'home_team': 'Ecuador',
'away_team': 'Venezuela',
'home_team_score': 5,
'away_team_score': 0,
'home_team_result': 'Win'
},
]
Reduce
reduce() es una función que toma como argumento un conjunto de valores y lo “reduce” a un único valor. Esta
función debe ser importada desde “functools”. A la función que se le pasa a reduce se le debe poner un contador
para que vaya reduciendo el iterable.
Sintaxis: functools.reduce(función, iterable)
Como funciona:
Primero toma los dos primeros elementos de la secuencia y aplica la función particular.
Toma el resultado anterior y a este valor mas el siguiente elemento de la secuencia le aplica la función particular.
Retorna el resultado.
import functools
numbers = [1, 2 , 3 , 4]
Módulos
Un modulo se puede definir que es lo mismo a una biblioteca de código. Es decir es un archivo que contiene un
conjunto de funciones que se pueden aplicar.
3. Abrimos el archivo con el cual vamos a trabajar y declaramos el modulo que le dimos el nombre por ejemplo con
la extensión import, sería de la siguiente manera: import name
def get_population():
keys = ['col', 'bol']
values = [300, 400]
return keys, values
Archivo main
import utils
But if the code is importing the module from another module, then the __name__ variable will be set to that module’s
name.
if __name__ == '__main__':
run()
Este if le dice a python que si este archivo es ejecutado desde la terminal, ejecute el metodo run. Pero si es
ejecutado desde otro archivo, eso no se ejecutará
Paquetes
Los paquetes son las carpetas que contienen varios módulos y cada uno con una función distinta.
Para versiones de Python anteriores a la 3.3 se debe tener siempre un archivo de nombre __init__.py (por lo general
esta vacio, ya que así es compatible con programas python versiones anteriores a la 3), con esto le estamos indicado
a python que esto se trata de un paquete y no de una carpeta.
Para acceder a los módulos de los paquetes podemos utilizar estas opciones:
import nombrecarpeta.nombremodulo
from nombrecarpeta import nombremodulo
from nombrecarpeta.nombremodulo import def
Iterables
Un iterable se define como el objeto que contiene un número contable con valores y este al tener un valor puede
recorrer uno a uno los elementos que la contienen como una estructura de datos y operar con ellos, pero a la vez se
rigen bajo la instrucción que se le es dada, con lo cual son dependientes de la instrucción a recibir.
print(next(myit)) # Con next vamos avanzando al siguiente valor del iterable de manera manual
print(next(myit))
print(next(myit))
Cuando hay otro next pero no hay más valores para iterar, se genera un error.
Errores en Python
Exception Description
EOFError Raised when the input() method hits an "end of file" condition (EOF)
NotImplementedError Raised when an abstract method requires an inherited class to override the method
RuntimeError Raised when an error occurs that do not belong to any specific exceptions
StopIteration Raised when the next() method of an iterator has no further values
Manejo de Excepciones
Cuando se nos presenta un error o una excepción como se le llama en python, el programa se detiene y presenta el
error que se presento, pero si utilizamos la excepción try() podemos omitir ese error y continuar con el programa.
Esto es de uso fundamental para que el programa no continue con su ejecución por el error y así evitar retrasos en la
producción, también de su uso para determinar en los bloques de código si se nos presenta un error poder ser
identificado de manera mas facil.
Para qué try sea efectivo podemos utilizar estas declaraciones:
Exception Description
try Permite probar un bloque de código en búsqueda de un error.
except Permite manejar el tipo de error en el bloque.
else Permite ejecutar el código cuando no hay ningún tipo de error en el bloque.
finally Permite ejecutar el código en el bloque, independiente en el resultado de los bloques de prueba y excepción
try:
print(0 / 0) # Error ZeroDibisionError
except: ZeroDivisionError as error: # Acá atrapamos el error y lo nombramos como "error"
print(error)
f = open('./text.txt')
print(f.read())
"""
linea 1
lina 2
linea 3
linea 4
"""
La función open() devuelve un resultado con print(f.read()) de tipo texto el cual es el método rápido de lectura.
Si queremos solamente realizar la lectura de una linea de texto, debemos utilizar readline() de la siguiente manera:
f = open('./text.txt')
print(f.readline()) # linea 1
f = open('./text.txt')
print(f.readline())
for l in f:
print(l)
f.close()
"""
linea 1
lina 2
linea 3
linea 4
"""
Al finalizar la lectura de un archivo debe ser cerrar su lectura con f.close() , pero hay una sintaxis para que Python lo
haga automáticamente:
Escribir en un archivo
Para poder escribir texto en python solo debemos agregar al parámetro open( ) algunas de las siguientes reglas:
Exception Description
“w” Escribir: Elimina todo el texto del archivo y sobre escribe cualquier contenido existente
Su sintaxis es un simple y fácil de usar, solo es necesario especificar el tipo de parámetro que queremos agregar a
nuestro texto.
Exception Description
“r” Lectura: Abre por defecto un archivo para su lectura, genera error si este no existe.
“t” texto: Valor por defecto, devuelve el resultado como tipo texto.
Leer un CSV
Las siglas CSV vienen del inglés "Comma Separated Values" y significan valores separados por comas. Dicho
esto, un archivo CSV es cualquier archivo de texto en el cual los caracteres están separados por comas, haciendo
una especie de tabla en filas y columnas. Las columnas quedan definidas por cada punto y coma (;), mientras que
cada fila se define mediante una línea adicional en el texto.
data = []
for row in reader:
iterable = zip(header, row) # une los valores de la listas en tuplas
country_dict = {key:value for key, value in iterable}
data.append(country_dict)
print(country_dict)
return data
if __name__ == '__main__':
labels = ['a', 'b', 'c']
values = [100, 200, 80]
# generate_bar_chart()
# generate_pie_chart()