Desde aqui muchas felicidades a todos por llegar hasta aqui. ╰(°▽°)╯
Introducción
El Zen de Python
Conjuntos
Sets
Modificando conjuntos
Operaciones con conjuntos
Playgrounds: Elimina elementos duplicados usando conjuntos
Comprehensions
List Comprehension
Dictionary Comprehension
Dictionary Comprehension: condition
Playgrounds: Crea una lista usando List Comprehension
Lists vs. Tuples vs. Sets
Funciones
Funciones
Funciones: return
Parámetros por defecto y múltiples returns
El scope
Refactor game
Playgrounds: Tienda de Tecnología
Funciones anónimas: lambda
Higher order function: una función dentro de otra función
Map
Map con diccionarios
Reto: map con inmutabilidad
Playgrounds: Multiplica todos los elementos por dos
Filter
Playgrounds: Retorna solo palabras de 4 letras y más
Reduce
Módulos
Módulos
Mis propios módulos
Módulos como scripts: __name__ y __main__
Paquetes
Playgrounds: Calcular la suma de todas las compras
Manipulación de archivos y errores
Iterables
Errores en Python
Manejo de excepciones
Playgrounds: Captura la excepción: ZeroDivisionError
Leer un archivo de texto
Escribir en un archivo
Leer un CSV
Playgrounds: Lee un CSV para calcular el total de gastos
Gráficas en Python
Creando una gráfica
Reto: graficando la población de un país
Reto: graficando la población mundial
Próximos pasos
¡Conoce otros proyectos de este curso!
Reconoce tu proceso y certifícate
Toma el Curso de PIP y Entornos Virtuales con Python
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 41
Preguntas 0
Desde aqui muchas felicidades a todos por llegar hasta aqui. ╰(°▽°)╯
assert()
hace una verificacion y manda un AssertionError
cuando no se cumple el “statement”
raise Exception()
levanta un error creado por nosotros mismo
# print(0 / 0)
# print(result)
print('Hola')
suma = lambda x,y: x + y
assert suma(2,2) == 4
print('Hola 2')
age = 10
if age < 18:
raise Exception('No se permiten menores de edad')
print('Hola 2')
En Python, los errores se conocen como excepciones. Las excepciones son eventos que ocurren durante la ejecución de un programa y que pueden interrumpir el flujo normal del programa si no se manejan adecuadamente. Python proporciona un sistema robusto para manejar excepciones y errores. Aquí tienes algunos conceptos básicos sobre excepciones en Python:
Tipos de Excepciones: Python tiene una variedad de excepciones incorporadas, como SyntaxError
, TypeError
, ZeroDivisionError
, FileNotFoundError
, entre otras. Cada excepción tiene un propósito específico y se lanza cuando ocurre una condición de error particular.
Lanzar una Excepción: Puedes lanzar manualmente una excepción usando la declaración raise
. Esto te permite crear excepciones personalizadas para manejar situaciones específicas.
pythonCopy code
def dividir(a, b):
if b == 0:
raise ZeroDivisionError("No se puede dividir entre cero")
return a / b
Manejo de Excepciones: Puedes manejar las excepciones utilizando bloques try
y except
. Esto te permite capturar excepciones específicas y tomar medidas adecuadas cuando ocurren.
pythonCopy code
try:
resultado = dividir(10, 0)
except ZeroDivisionError as error:
print(f"Error: {error}")
Bloque finally
: Puedes usar un bloque finally
para especificar código que siempre se ejecutará, ya sea que se lance o no una excepción. Es útil para liberar recursos, como cerrar archivos o conexiones de bases de datos.
pythonCopy code
try:
archivo = open("mi_archivo.txt", "r")
contenido = archivo.read()
except FileNotFoundError:
print("El archivo no se encontró")
finally:
archivo.close()
Manejo de Excepciones Múltiples: Puedes manejar múltiples excepciones utilizando varios bloques except
. Esto te permite tomar acciones específicas para diferentes tipos de excepciones.
pythonCopy code
try:
resultado = dividir(10, 0)
except ZeroDivisionError as error:
print(f"Error de división: {error}")
except TypeError as error:
print(f"Error de tipo: {error}")
Excepciones Personalizadas: Puedes crear tus propias clases de excepciones personalizadas heredando de Exception
o alguna excepción incorporada. Esto te permite definir tus propias reglas para el manejo de errores.
pythonCopy code
class MiErrorPersonalizado(Exception):
def __init__(self, mensaje):
super().__init__(mensaje)
try:
raise MiErrorPersonalizado("Esto es un error personalizado")
except MiErrorPersonalizado as error:
print(f"Error personalizado: {error}")
#---------- Errores ---------
# error de sintaxis
print(0/0))
--> SyntaxError: unmatched ')'
# error division por cero
print(0/0)
--> ZeroDivisionError: division by zero
#variable no declarada
print(result)
--> NameError: name 'result' is not defined
#verificacion con assert
suma = lambda x, y: x + y
assert suma(2,2) == 5
--> AssertionError
# lanzar errores propios con raise
age = 10
if age < 18:
raise Exception('No se permiten menores de edad')
--> Exception: No se permiten menores de edad
Prueba de Python excepto
¿Qué es una excepción?
Assert: es una keyword en Python que permite definir condiciones que siempre (obligatoriamente) deben cumplirse, por lo que la expresión siempre deberá ser True, disparando una excepción (AssertionError) en caso de que no lo sea.
Sintaxis:
assert True
Raise: Genera una excepcion forzada, deteniendo el flujo del programa.
Sintaxis:
raise Exception('user_text')
# print(0 / 0)
# print(result)
print( ‘Hola’ )
suma = lambda x,y: x + y
assert suma(2,2) == 4
print( 'Hola 2')
age = 10
if age < 18:
raise Exception('No se permiten menores de edad')
print( ‘Hola 2')
Aquí hay un vídeo con sugerencias sobre el buen uso de assert
, desde la sintaxis hasta cómo hacer el programa más rápido y que no gaste memoria innecesaria. Quizá no va con la dificultad del curso, pero enseña varios truquitos de Python 😉
Hola!
Les comparto el código de la clase con todos los errores planteados.
# Errores en Python
# https://www.w3schools.com/python/python_ref_exceptions.asp
'''
SyntaxError: unmatched ')'
print(0 / 0))
ZeroDivisionError: division by zero
print(0 / 0)
NameError: name 'result' is not defined
print(result)
AssertionError
assert suma(2, 2) == 5
'''
print("Hola")
suma = lambda x, y: x + y
assert suma(2, 2) == 4
# Generar un error personalizado
age = 10
if age < 18:
raise Exception("No se permite menores de edad")
'''
Cuando se generan errores en Python el programa se detiene y no ejecuta nada de lo que se encuentra a continuación.
'''
print("Hola 2")
Ahora puedo hacer mis propios errores!
En Python, los errores se dividen en dos categorías: errores de sintaxis y excepciones.
Errores de sintaxis: son errores que ocurren cuando el código no sigue las reglas de sintaxis de Python. Por ejemplo, si olvidamos colocar dos puntos al final de una línea de código que define un bloque, obtendremos un error de sintaxis.
Excepciones: son errores que ocurren durante la ejecución del código. Por ejemplo, podríamos obtener una excepción al intentar dividir un número entero por cero o al intentar acceder a un índice de una lista que no existe.
Podemos utilizar la sentencia try-except para manejar las excepciones y evitar que el programa se bloquee. Por ejemplo:
La palabra clave assert se utiliza para verificar si una condición es verdadera. Si la condición es verdadera, assert no hace nada y el programa continúa ejecutándose normalmente. Si la condición es falsa, assert genera una excepción AssertionError y detiene la ejecución del programa.
La declaración raise se utiliza para lanzar una excepción. A menudo se utiliza junto con las declaraciones try y except para manejar las excepciones que pueden ocurrir en su código.
Algunas excepciones comunes en Python son:
TypeError: ocurre cuando se intenta realizar una operación con objetos de tipos incorrectos.
NameError: ocurre cuando se hace referencia a una variable que no ha sido definida.
IndexError: ocurre cuando se intenta acceder a un índice de una lista que no existe.
ValueError: ocurre cuando se intenta realizar una operación con un valor inapropiado.
KeyError: ocurre cuando se intenta acceder a un diccionario con una clave que no existe.
ZeroDivisionError: ocurre cuando se intenta dividir un número entero por cero.
Creo que el proposito principal es que no se detenga el codigo por un error, sino que sepa esceptuarlo para continuar funcionando
Interesante clase, hasta ya viene un built-in para cuando es division por cero. ZeroDivisionError
yo a veces cometo el error de colocar printf en python y en C coloco print hahahahah
El assert es una declaración en Python que se utiliza para verificar si una condición es verdadera, y si no lo es, lanzar una excepción AssertionError. El uso típico del assert es para verificar la entrada de una función o para controlar el estado interno de un programa.
Sintaxis:
assert expression, error_message
Ejemplo:
x = 5
assert x > 0, "x debe ser mayor que 0"
Jerarquía de excepción
La jerarquía de clases para las excepciones incorporadas es:
BaseException
├── BaseExceptionGroup
├── GeneratorExit
├── KeyboardInterrupt
├── SystemExit
└── Exception
├── ArithmeticError
│ ├── FloatingPointError
│ ├── OverflowError
│ └── ZeroDivisionError
├── AssertionError
├── AttributeError
├── BufferError
├── EOFError
├── ExceptionGroup [BaseExceptionGroup]
├── ImportError
│ └── ModuleNotFoundError
├── LookupError
│ ├── IndexError
│ └── KeyError
├── MemoryError
├── NameError
│ └── UnboundLocalError
├── OSError
│ ├── BlockingIOError
│ ├── ChildProcessError
│ ├── ConnectionError
│ │ ├── BrokenPipeError
│ │ ├── ConnectionAbortedError
│ │ ├── ConnectionRefusedError
│ │ └── ConnectionResetError
│ ├── FileExistsError
│ ├── FileNotFoundError
│ ├── InterruptedError
│ ├── IsADirectoryError
│ ├── NotADirectoryError
│ ├── PermissionError
│ ├── ProcessLookupError
│ └── TimeoutError
├── ReferenceError
├── RuntimeError
│ ├── NotImplementedError
│ └── RecursionError
├── StopAsyncIteration
├── StopIteration
├── SyntaxError
│ └── IndentationError
│ └── TabError
├── SystemError
├── TypeError
├── ValueError
│ └── UnicodeError
│ ├── UnicodeDecodeError
│ ├── UnicodeEncodeError
│ └── UnicodeTranslateError
└── Warning
├── BytesWarning
├── DeprecationWarning
├── EncodingWarning
├── FutureWarning
├── ImportWarning
├── PendingDeprecationWarning
├── ResourceWarning
├── RuntimeWarning
├── SyntaxWarning
├── UnicodeWarning
└── UserWarning
Interesante los errores que tiene la programacion python cuando se cometen los errores comunes en nuestro lenguaje. Esto nos permite mejorar con respecto a la funcionalidad. Es mejor manejarlos y estos no se visualicen en nuestro ejercicio.
# Errores en Python
# https://www.w3schools.com/python/python_ref_exceptions.asp
'''
Error de sintaxis
print(0/0))
# --> SyntaxError: unmatched ')'
'''
'''
Error de division por cero
print(0/0)
# --> ZeroDivisionError: division by zero
'''
'''
Error de variable no declarada
print(result)
# --> NameError: name 'result' is not defined
'''
print('Hola')
# assert() hace una verificacion y manda un AssertionError cuando no se cumple el “statement”
suma = lambda x,y: x + y
assert suma(2,2) == 4
'''
suma = lambda x, y: x + y
assert suma(2,2) == 5
# --> AssertionError
'''
print('Hola 2')
# raise Exception() levanta un error creado por nosotros mismos
age = 10
if age < 18:
raise Exception('No se permiten menores de edad')
print('Hola 2')
Built-in Exceptions
The table below shows built-in exceptions that are usually raised in Python:
.
Exception Description
ArithmeticError Raised when an error occurs in numeric calculations
AssertionError Raised when an assert statement fails
AttributeError Raised when attribute reference or assignment fails
Exception Base class for all exceptions
EOFError Raised when the input() method hits an “end of file” condition (EOF)
FloatingPointError Raised when a floating point calculation fails
GeneratorExit Raised when a generator is closed (with the close() method)
ImportError Raised when an imported module does not exist
IndentationError Raised when indentation is not correct
IndexError Raised when an index of a sequence does not exist
KeyError Raised when a key does not exist in a dictionary
KeyboardInterrupt Raised when the user presses Ctrl+c, Ctrl+z or Delete
LookupError Raised when errors raised cant be found
MemoryError Raised when a program runs out of memory
NameError Raised when a variable does not exist
NotImplementedError Raised when an abstract method requires an inherited class to override the method
OSError Raised when a system related operation causes an error
OverflowError Raised when the result of a numeric calculation is too large
ReferenceError Raised when a weak reference object does not exist
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
SyntaxError Raised when a syntax error occurs
TabError Raised when indentation consists of tabs or spaces
SystemError Raised when a system error occurs
SystemExit Raised when the sys.exit() function is called
TypeError Raised when two different types are combined
UnboundLocalError Raised when a local variable is referenced before assignment
UnicodeError Raised when a unicode problem occurs
UnicodeEncodeError Raised when a unicode encoding problem occurs
UnicodeDecodeError Raised when a unicode decoding problem occurs
UnicodeTranslateError Raised when a unicode translation problem occurs
ValueError Raised when there is a wrong value in a specified data type
ZeroDivisionError Raised when the second operator in a division is zero
me atrevería a decir que esta es una de las clases más importantes del presente curso
Algunos de los tipos de excepciones más comunes en Python incluyen:
SyntaxError: Se produce cuando el código no sigue la sintaxis válida de Python.
NameError: Ocurre cuando se utiliza una variable o un nombre no definido en el contexto actual.
TypeError: Se genera cuando se realiza una operación en un objeto de un tipo incorrecto.
ValueError: Sucede cuando una función recibe un argumento de tipo correcto, pero con un valor incorrecto.
FileNotFoundError: Ocurre cuando se intenta abrir un archivo que no existe.
ZeroDivisionError: Se produce cuando se intenta dividir un número entre cero.
Ejemplo básico de cómo se maneja una excepción en Python:
try:
x = 10 / 0 # Intentando dividir entre cero
except ZeroDivisionError:
print("Error: No es posible dividir entre cero.")
#print(0 / 0)
#print(result)
print(3)
suma = lambda x,y: x+y
assert suma(2,2) == 4
print(4)
age = 10
if age > 18:
raise Exception('No se permiten menores de edad')
print(5)
Me encantó esta clase. El conocer las excepciones y manejarlas nos permite poder desarrollar códigos con mejores estándares. Espero más adelante nos expliquen la diferencia entre excepciones del sistema y excepciones del negocio
las excepciones se parecen mucho al if y al else if solo que el codigo no se ejecuta mas
#Errores en Python
#Cuando aparece un error, el programa colapsa no importa
#si esta bien lo que sigue
#print(0/0) #ZeroDivisionError Exception
#print(result) #NameError Exception
print("Hola")
#assert: se usa para verificar
#si se verifica no pasa nada, pero si no, ocurre un error
suma=lambda x,y:x+y
assert suma(2,2)==4 #AssertionError Exception
print("Hola")
#Yo puedo lanzar mis propias excepciones
edad=10
if edad<18:
raise Exception("No se permite menores de edad")
#print(0/0)
#print(result)
print('Hola')
suma= lambda x, y: x + y
assert suma(2, 2) == 4
print('Hola 2')
age = 10
if age < 18:
raise Exception('No se permite menores de edad')
print ('Hola 3')
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?