diff --git a/lab-python-error-handling.ipynb b/lab-python-error-handling.ipynb index 3e50ef8..64d2a85 100644 --- a/lab-python-error-handling.ipynb +++ b/lab-python-error-handling.ipynb @@ -41,18 +41,187 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "cc2c441d-9dcf-4817-b097-cf6cbe440846", "metadata": {}, "outputs": [], "source": [ - "# your code goes here" + "#1.\n", + "def inventario_inicial(productos):\n", + " inventario = {}\n", + " for producto in productos:\n", + " cantidades_producto = int (input(f\"Ingrese la cantidad inicial de {producto}: \"))\n", + " inventario [producto] = cantidades_producto\n", + " return inventario" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "94d692aa", + "metadata": {}, + "outputs": [], + "source": [ + "def inventario_inicial(productos):\n", + " inventario = {}\n", + "\n", + " for producto in productos:\n", + " while True:\n", + " try:\n", + " quantity = int(input(f\"Ingrese la cantidad inicial de {producto}: \"))\n", + "\n", + " if quantity < 0:\n", + " raise ValueError(\"La cantidad no puede ser negativa.\")\n", + "\n", + " except ValueError as e:\n", + " print(f\"Error: {e}\")\n", + " print(\"Ingrese un número válido.\")\n", + " else:\n", + " inventario[producto] = quantity\n", + " break\n", + " finally:\n", + " print(\"Intentando cargar producto...\")\n", + "\n", + " return inventario\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "0e27fb0b", + "metadata": {}, + "outputs": [], + "source": [ + "def obtener_orden_cliente ():\n", + " orden_cliente = set ()\n", + " while True:\n", + " producto = input(\"Ingrese el nombre del producto que desea comprar (o 'fin' para terminar): \")\n", + " if producto.lower() == 'fin':\n", + " break\n", + " orden_cliente.add(producto)\n", + " return orden_cliente" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e5a65fc5", + "metadata": {}, + "outputs": [], + "source": [ + "def obtener_orden_cliente():\n", + " orden_cliente = set()\n", + "\n", + " while True:\n", + " try:\n", + " producto = input(\"Ingrese el producto (o 'fin' para terminar): \").strip()\n", + "\n", + " if producto == \"\":\n", + " raise ValueError(\"No puede estar vacío.\")\n", + "\n", + " if producto.lower() == \"fin\":\n", + " break\n", + "\n", + " orden_cliente.add(producto)\n", + "\n", + " except ValueError as e:\n", + " print(f\"Error: {e}\")\n", + " else:\n", + " print(f\"{producto} agregado correctamente.\")\n", + "\n", + " return orden_cliente\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a0b388fd", + "metadata": {}, + "outputs": [], + "source": [ + "def inventario_actualizado (orden_cliente, inventario):\n", + " for producto in orden_cliente:\n", + " if producto in inventario:\n", + " inventario [producto] -= 1\n", + " return inventario" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "dc348386", + "metadata": {}, + "outputs": [], + "source": [ + "def inventario_actualizado(customer_orders, inventory):\n", + " try:\n", + " for producto in orden_cliente:\n", + " if producto not in inventario:\n", + " raise KeyError(f\"{producto} no existe en el inventario.\")\n", + "\n", + " inventoario[producto] -= 1\n", + "\n", + " if inventario[producto] < 0:\n", + " raise ValueError(f\"No hay stock suficiente para {producto}\")\n", + "\n", + " except KeyError as e:\n", + " print(f\"Error: {e}\")\n", + " except ValueError as e:\n", + " print(f\"Error: {e}\")\n", + " else:\n", + " print(\"Inventario actualizado correctamente.\")\n", + " finally:\n", + " print(\"Proceso de actualización finalizado.\")\n", + "\n", + " return inventario\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "e151d665", + "metadata": {}, + "outputs": [], + "source": [ + "def calculo_estadísticas_orden (orden_cliente, productos):\n", + " total_productos = len(orden_cliente)\n", + " productos_unicos = len(set(orden_cliente))\n", + " porcentaje_productos = (productos_unicos / len(productos)) * 100\n", + " return total_productos, productos_unicos, porcentaje_productos" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "3a8b62b1", + "metadata": {}, + "outputs": [], + "source": [ + "def calculate_order_statistics(orden_cliente, productos):\n", + " try:\n", + " total_productos = len(orden_cliente)\n", + " productos_unicos = len(set(orden_cliente))\n", + "\n", + " if len(products) == 0:\n", + " raise ZeroDivisionError(\"No hay productos en inventario.\")\n", + "\n", + " percentage = (productos_unicos / len(productos)) * 100\n", + "\n", + " except ZeroDivisionError as e:\n", + " print(f\"Error: {e}\")\n", + " percentage = 0\n", + " else:\n", + " print(\"Estadísticas calculadas correctamente.\")\n", + " finally:\n", + " print(\"Proceso de estadísticas finalizado.\")\n", + "\n", + " return total_productos, productos_unicos, percentage\n" ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -66,7 +235,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.13.9" } }, "nbformat": 4,