¿Qué son las afirmaciones en programación y para qué se utilizan?
En el mundo de la programación, las afirmaciones son una herramienta poderosa que nos permite verificar si ciertas condiciones se cumplen o no durante la ejecución de un programa. Este mecanismo es clave para asegurar que un programa reciba y maneje correctamente los datos de entrada, evitando errores potenciales y asegurando la robustez del código. Pero, ¿cómo funcionan exactamente y por qué son tan importantes?
¿Por qué es esencial el uso de afirmaciones?
Las afirmaciones, también conocidas como "asserts", se emplean en la programación defensiva. Este enfoque nos prepara para validar que los inputs de nuestros programas son del tipo que esperamos. Por ejemplo:
Verificación de tipos: Si tenemos un programa que solamente opera con enteros, las afirmaciones nos ayudan a confirmar que los datos proporcionados realmente sean enteros y no, por ejemplo, strings u otros tipos de datos.
Prevención de errores lógicos: Un error de tipo puede resultar en un fallo del programa o, incluso peor, en un error lógico difícil de detectar. Las afirmaciones pueden atrapar estas situaciones antes de que ocurra un problema crítico.
Control de flujo: Las afirmaciones permiten determinar si se puede continuar con la ejecución del programa o si es necesario detenerlo en caso de que una condición no se cumpla.
¿Cómo se crean y utilizan las afirmaciones?
Utilizar afirmaciones en Python es sencillo. Se emplea la palabra clave assert, seguida de una expresión booleana que debe evaluarse como verdadera para continuar la ejecución del programa. Además, se puede proporcionar un mensaje que se muestra si la afirmación falla. Aquí tienes un ejemplo práctico:
defprimera_letra(lista_palabras): primeras_letras =[]for palabra in lista_palabras:assertisinstance(palabra,str),"La palabra no es un String"assertlen(palabra)>0,"No se permiten Strings vacíos" primeras_letras.append(palabra[0])return primeras_letras
En este ejemplo, la función primera_letra recibe una lista de palabras y extrae la primera letra de cada una. Las afirmaciones garantizan que cada palabra en la lista sea un string no vacío.
¿Qué se debe tener en cuenta al usar afirmaciones?
Al implementar afirmaciones en tu código, es importante considerar los siguientes aspectos:
Claridad del mensaje: Usa mensajes de error claros y específicos para facilitar el proceso de depuración.
Uso adecuado: No abuses de las afirmaciones para validar la lógica del negocio o en partes del código donde los errores deban ser manejados mediante excepciones.
Documentación: Al documentar tus funciones, es útil incluir las condiciones que validan las afirmaciones para que otros desarrolladores comprendan los requisitos y las restricciones.
¿Cómo podemos mejorar el uso de afirmaciones?
El uso eficaz de las afirmaciones requiere práctica y conocimiento sobre cuándo y cómo aplicarlas en el flujo de un programa. Aquí algunos consejos:
Experimenta y comparte: Probar con diferentes situaciones te ayudará a entender mejor su potencial. Comparte tus experiencias y aprende de las situaciones en las que otros desarrolladores han utilizado afirmaciones de manera efectiva.
Consulta la documentación: La documentación oficial de lenguajes como Python ofrece información valiosa sobre las mejores prácticas para usar afirmaciones.
Finalmente, no dudes en dejar tus comentarios y compartir tus experiencias sobre el uso de asserts. La colaboración y el intercambio de ideas son esenciales para seguir aprendiendo y mejorando nuestras habilidades en programación. ¡Feliz codificación!
Que increíble clase, jamas sabia escuchado de los (assert) , pero creo que de ahora en adelante voy a utilizarlos muchos.
Por eso es que repito, que aun siendo un veterano en algo, es bueno ver como lo miran los principiantes para aprender cosas nueva.
WOW python es realmente increíble, bueno con los assert nunca lo he utilizado porque es mi primera vez que escribo en este lenguaje pero me parece fascinante todo lo que estoy aprendiendo de python.
Me explicaron esto en el 2006, no lo llamaron programación defensiva era solamente estar atento a que el usuario no nos engañara mandando inputs extraños y buggeando el programa.
Hemos usado el sistema de afirmaciones pero por el lado de PHP a través del framework Laravel usando las validaciones en peticiones (requests) Http que llegan al backend.
Use tu código, sin embargo únicamente me está mostrando la primera letra de la última palabra. Revisaré como lograr indexar en cada posición de la variable "primeras_letras" la respectiva primera letra. Debería arrojarla separada por comas.
En la linea 13, cuando quito "list", me sale igual, el mismo resultado. Así qué la modificación debe hacerse dentro de la función para que indexe las primeras letras.
Posiblemente tengas un error en la linea 8, ya que allí es donde se selecciona la primera letra de cada palabra que esta en la "lista_de_palabras" y luego esta se añade a "primeras_letras".
La declaración de afirmación de Python es una ayuda de depuración, no un mecanismo para manejar errores de tiempo de ejecución. El objetivo de usar aserciones es permitir que los desarrolladores encuentren la causa raíz probable de un error más rápidamente.
def primera_letra(lista_palabras): primeras_letras =[]for palabra inlista_palabras:try: assert type(palabra)== str, f'{palabra} no es String' assert len(palabra)>0,'No se permiten vacios' primeras_letras.append(palabra[0]) except AssertionErrorase:print(e)return primeras_letras
lista =['Angelo',5.5,'',2,'43952353',0.35]print('Primeras letras validas son : ',primera_letra(lista))
Afirmaciones
Las afirmaciones son un mecanismo en la que podemos determinar si una afirmación se cumple o no se cumple y poder seguir adelante con la ejecución de nuestro programa o darle término.
Las afirmaciones es un método de programación defensiva, esto significa que nos estamos preparando para verificar que los tipos de inputs de nuestro programa es del tipo que nosotros esperamos. Estos también nos sirven para debuggear.
Para realizar una afirmación en nuestro programa lo hacemos con la expresión assert <expresion booleana>, <mensaje de error>.
defprimera_letra(lista_de_palabras): primeras_letras =[]for palabra in lista_de_palabras:asserttype(palabra)==str,f'{palabra} no es str'assertlen(palabra)>0,'No se permiten str vacios' primeras_letras.append(palabra[0])return primeras_letras
Afirmaciones
Es un mecanismo por el cuál podemos determinar si una función se cumple o no se cumple. Y poder seguir adelante con la ejecución de nuestro programa o terminar dicha ejecución.
Programación defensiva
Pueden utilizarse para verificar que los tipos sean correctos en una función.
También sirven para debuguear.
Para generarlas tenemos que utlizar el keyword assert y dar una expresión boleana y un mensaje de error
defprimera_letra(lista_palabras): primeras_letras =[]for palabra in lista_palabras:try:asserttype(palabra)==str,f'{palabra} no es String'assertlen(palabra)>0,'No se permiten vacios' primeras_letras.append(palabra[0])except AssertionError as e:print(e)return primeras_letras