Ejercicios
Ejercicio: Registro de una Aplicación de Conversión de Temperatura
Crea una aplicación de línea de comandos que convierta la temperatura de Celsius a Fahrenheit y viceversa. Utiliza la biblioteca logging
para registrar información sobre las conversiones y posibles errores.
Requisitos:
-
La aplicación debe aceptar dos argumentos de línea de comandos: la temperatura y la escala de origen (
C
para Celsius oF
para Fahrenheit). -
Debe convertir la temperatura a la escala de destino y mostrar el resultado en la consola.
-
La aplicación debe manejar errores como temperaturas inválidas o escalas incorrectas y registrar estos errores utilizando la biblioteca
logging
.
Pasos sugeridos:
-
Configura el registro de la aplicación utilizando la biblioteca
logging
. Define un logger con un handler de consola y un formatter adecuado. -
Implementa la lógica de conversión de temperatura en una función separada. Esta función debe manejar la conversión de Celsius a Fahrenheit y viceversa, y manejar errores utilizando la declaración
try-except
. -
Crea un script principal que utilice la función de conversión de temperatura según los argumentos de línea de comandos proporcionados por el usuario.
-
Agrega declaraciones de registro en la función de conversión para registrar información sobre las conversiones realizadas y posibles errores.
-
Ejecuta el script con diferentes temperaturas y escalas para probar su funcionalidad. Observa los registros generados por la aplicación y asegúrate de que la información sea útil y comprensible.
Ejemplo de Registro:
$ python convertidor_temperatura.py 32 C
2022-04-12 12:00:00 - convertidor_temperatura - INFO - Convertir 32 grados Celsius a Fahrenheit
2022-04-12 12:00:00 - convertidor_temperatura - INFO - Resultado: 89.6 grados Fahrenheit
$ python convertidor_temperatura.py 100 F
2022-04-12 12:00:00 - convertidor_temperatura - INFO - Convertir 100 grados Fahrenheit a Celsius
2022-04-12 12:00:00 - convertidor_temperatura - INFO - Resultado: 37.78 grados Celsius
$ python convertidor_temperatura.py 100 K
2022-04-12 12:00:00 - convertidor_temperatura - ERROR - Escala de temperatura no válida: K
Ejercicio: Registro de una Aplicación de Gestión de Inventario
Desarrolla una aplicación de línea de comandos para gestionar un inventario de productos. La aplicación debe permitir agregar, eliminar y listar productos, y registrar estas operaciones en un archivo de registro.
Requisitos:
-
La aplicación debe aceptar diferentes comandos de línea de comandos para realizar operaciones en el inventario:
agregar
,eliminar
ylistar
. -
Debe permitir al usuario agregar un producto especificando su nombre y cantidad, eliminar un producto por su nombre y listar todos los productos en el inventario.
-
Todas las operaciones realizadas en el inventario deben registrarse en un archivo de registro utilizando la biblioteca
logging
.
Pasos sugeridos:
-
Configura el registro de la aplicación utilizando la biblioteca
logging
. Define un logger con un handler de archivo y un formatter adecuado para registrar las operaciones del inventario. -
Implementa funciones separadas para cada comando de línea de comandos:
agregar_producto
,eliminar_producto
ylistar_productos
. Estas funciones deben manejar las operaciones correspondientes en el inventario y registrar las acciones utilizando el logger configurado. -
Crea un script principal que analice los argumentos de línea de comandos y llame a las funciones correspondientes según el comando proporcionado por el usuario.
-
Asegúrate de manejar adecuadamente los casos de error, como productos que ya existen o productos que no se encuentran en el inventario, y registra estos errores utilizando el logger.
-
Ejecuta el script y prueba cada uno de los comandos para asegurarte de que el registro de operaciones en el inventario funcione correctamente y se registre en el archivo de registro.
Ejemplo de Registro:
2022-04-12 12:00:00 - gestion_inventario - INFO - Producto 'Manzanas' agregado al inventario, cantidad: 10
2022-04-12 12:00:00 - gestion_inventario - INFO - Producto 'Plátanos' agregado al inventario, cantidad: 5
2022-04-12 12:00:00 - gestion_inventario - INFO - Producto 'Manzanas' eliminado del inventario
2022-04-12 12:00:00 - gestion_inventario - INFO - Listado de productos en el inventario: {'Plátanos': 5}
2022-04-12 12:00:00 - gestion_inventario - ERROR - El producto 'Peras' no se encuentra en el inventario
Ejercicio: Registro de Solicitudes HTTP
Desarrolla un script Python que realice solicitudes HTTP a un servidor remoto utilizando la biblioteca requests
. Utiliza la biblioteca logging
para registrar información sobre las solicitudes realizadas, incluyendo el método HTTP, la URL solicitada, el código de estado de la respuesta y cualquier error que ocurra durante la solicitud.
Requisitos:
-
Utiliza la biblioteca
requests
para realizar solicitudes HTTP a un servidor remoto. Puedes usar una API pública o un servidor local para este propósito. -
Configura el registro de las solicitudes HTTP utilizando la biblioteca
logging
. Define un logger con un handler de archivo y un formatter adecuado para registrar la información de las solicitudes. -
Registra la información de cada solicitud realizada, incluyendo el método HTTP, la URL solicitada, el código de estado de la respuesta y cualquier error que ocurra durante la solicitud.
Pasos sugeridos:
-
Configura el registro de las solicitudes HTTP utilizando la biblioteca
logging
. Define un logger con un handler de archivo y un formatter adecuado para registrar la información de las solicitudes. -
Utiliza la biblioteca
requests
para realizar solicitudes HTTP a un servidor remoto. Puedes probar con diferentes métodos HTTP como GET, POST, PUT, DELETE, etc. -
Registra la información de cada solicitud realizada utilizando el logger configurado. Incluye detalles como el método HTTP utilizado, la URL solicitada y el código de estado de la respuesta.
-
Maneja cualquier error que ocurra durante la solicitud utilizando un bloque
try-except
y registra los detalles del error utilizando el logger configurado. -
Ejecuta el script y realiza varias solicitudes HTTP para generar registros de actividad. Verifica que la información de las solicitudes y cualquier error se esté registrando correctamente en el archivo de registro.
Ejemplo de Registro:
2022-04-12 12:00:00 - solicitud_http - INFO - GET - http://api.example.com/data - Código de estado: 200
2022-04-12 12:00:05 - solicitud_http - INFO - POST - http://api.example.com/create - Código de estado: 201
2022-04-12 12:00:10 - solicitud_http - ERROR - PUT - http://api.example.com/update - Error: 404 Not Found
Este ejercicio te permitirá practicar la integración del registro con la realización de solicitudes HTTP utilizando la biblioteca requests
en Python, lo que te ayudará a entender cómo registrar y manejar la actividad de las solicitudes en tus aplicaciones.
solicitudes_http = [
{'url': 'https://www.nonexistentwebsite.com', 'metodo': 'DELETE'},
{'url': 'https://jsonplaceholder.typicode.com/comments', 'metodo': 'POST'},
{'url': 'https://www.google.com', 'metodo': 'GET'},
{'url': 'https://jsonplaceholder.typicode.com/posts', 'metodo': 'POST'},
{'url': 'https://www.nonexistentwebsite.com', 'metodo': 'PUT'},
{'url': 'https://api.github.com/repos/octocat/Hello-World', 'metodo': 'GET'},
{'url': 'https://api.spotify.com/v1/search', 'metodo': 'GET'},
{'url': 'https://api.spotify.com/v1/albums/5UJpUv7o8Ogqv1Kb0R0sz5', 'metodo': 'GET'},
{'url': 'https://api.spotify.com/v1/playlists/37i9dQZF1DZ06evO4SzTt8/tracks', 'metodo': 'GET'},
{'url': 'https://jsonplaceholder.typicode.com/comments/1', 'metodo': 'DELETE'},
{'url': 'https://api.spotify.com/v1/artists/1hCkSJcXREhrodeIHQdav8', 'metodo': 'GET'},
{'url': 'https://jsonplaceholder.typicode.com/posts/1', 'metodo': 'PUT'},
{'url': 'https://api.github.com/users/octocat', 'metodo': 'GET'},
{'url': 'https://api.spotify.com/v1/users/wizzler/playlists', 'metodo': 'GET'},
{'url': 'https://api.spotify.com/v1/playlists/37i9dQZF1DZ06evO4SzTt8', 'metodo': 'GET'},
{'url': 'https://api.spotify.com/v1/playlists/37i9dQZF1DZ06evO4SzTt8', 'metodo': 'GET'},
{'url': 'https://www.openai.com', 'metodo': 'GET'},
{'url': 'https://www.nonexistentwebsite.com', 'metodo': 'POST'},
{'url': 'https://jsonplaceholder.typicode.com/comments/1', 'metodo': 'PUT'},
{'url': 'https://jsonplaceholder.typicode.com/posts', 'metodo': 'PUT'}
]