diff --git a/lab-python-lambda-map-reduce-filter.ipynb b/lab-python-lambda-map-reduce-filter.ipynb index 96c9781..144d8fc 100644 --- a/lab-python-lambda-map-reduce-filter.ipynb +++ b/lab-python-lambda-map-reduce-filter.ipynb @@ -66,7 +66,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "08463071-9351-4d49-8d29-4fcb817fb177", "metadata": {}, "outputs": [], @@ -94,12 +94,36 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "0781335d-39cf-403d-b86a-ca908a09fe55", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Créditos: [2500, 850, 1500, 5000, 1000]\n", + "Débitos: [(-1200, 'debit'), (-100, 'debit'), (-250, 'debit'), (-300, 'debit'), (-850, 'debit')]\n" + ] + } + ], "source": [ - "# your code goes here" + "# your code goes here\n", + "\n", + "# Lista de transacciones\n", + "transactions = [(-1200, 'debit'), (2500, 'credit'), (-100, 'debit'), (850, 'credit'), \n", + " (-250, 'debit'), (1500, 'credit'), (-300, 'debit'), (5000, 'credit'), \n", + " (-850, 'debit'), (1000, 'credit')]\n", + "\n", + "# Crear la lista de créditos (transacciones de tipo 'credit')\n", + "credits = [amount for amount, type in transactions if type == 'credit']\n", + "\n", + "# Crear la lista de débitos (transacciones de tipo 'debit') usando filter()\n", + "debits = list(filter(lambda transaction: transaction[1] == 'debit', transactions))\n", + "\n", + "# Mostrar las listas resultantes\n", + "print(\"Créditos:\", credits)\n", + "print(\"Débitos:\", debits)" ] }, { @@ -124,12 +148,37 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "25073469-7258-4fc6-b0a0-ef8ea57688fe", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Débitos ordenados en orden descendente: [(-100, 'debit'), (-250, 'debit'), (-300, 'debit'), (-850, 'debit'), (-1200, 'debit')]\n" + ] + } + ], "source": [ - "# your code goes here" + "# your code goes here\n", + "\n", + "# Lista de transacciones\n", + "transactions = [(-1200, 'debit'), (2500, 'credit'), (-100, 'debit'), (850, 'credit'), \n", + " (-250, 'debit'), (1500, 'credit'), (-300, 'debit'), (5000, 'credit'), \n", + " (-850, 'debit'), (1000, 'credit')]\n", + "\n", + "# Crear la lista de débitos (transacciones de tipo 'debit') usando filter()\n", + "debits = list(filter(lambda transaction: transaction[1] == 'debit', transactions))\n", + "\n", + "# Definir la función lambda para ordenar en orden descendente por el monto\n", + "sort_descending = lambda t1, t2: t1[0] > t2[0]\n", + "\n", + "# Ordenar la lista de débitos en orden descendente usando sorted() y la función lambda\n", + "sorted_debits = sorted(debits, key=lambda x: x[0], reverse=True)\n", + "\n", + "# Mostrar la lista ordenada\n", + "print(\"Débitos ordenados en orden descendente:\", sorted_debits)" ] }, { @@ -158,7 +207,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "e1de9d03-f029-4e2e-9733-ae92e3de7527", "metadata": {}, "outputs": [], @@ -169,12 +218,44 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "2f253b7e-5300-4819-b38f-9fc090554f51", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saldos después de un año con interés: [105.0, 52.5, -25, 1050.0, -10]\n" + ] + } + ], "source": [ - "# your code goes here" + "# your code goes here\n", + "\n", + "\n", + "\n", + "# Función para calcular el saldo después de un año con interés\n", + "def calculate_balance_with_interest(balance, interest_rate=0.05):\n", + " \"\"\"\n", + " Calcula el saldo después de un año con interés.\n", + "\n", + " Parameters:\n", + " balance (float): El saldo actual de la cuenta.\n", + " interest_rate (float): La tasa de interés anual (por defecto 0.05).\n", + "\n", + " Returns:\n", + " float: El saldo después de un año con interés.\n", + " \"\"\"\n", + " if balance < 0: # Si el saldo es negativo, no se aplica interés\n", + " return balance\n", + " return balance * (1 + interest_rate)\n", + "\n", + "# Aplicar la función a la lista de saldos usando map()\n", + "updated_balances = list(map(calculate_balance_with_interest, balances))\n", + "\n", + "# Mostrar la lista de saldos actualizados\n", + "print(\"Saldos después de un año con interés:\", updated_balances)" ] }, { @@ -195,7 +276,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "69e24c3b-385e-44d6-a8ed-705a3f58e696", "metadata": {}, "outputs": [], @@ -209,12 +290,47 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "0906a9b0-d567-4786-96f2-5755611b885e", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cuentas actualizadas después de un año con interés: [{'balance': 1020.0, 'interest_rate': 0.02}, {'balance': 2020.0, 'interest_rate': 0.01}, {'balance': 515.0, 'interest_rate': 0.03}]\n" + ] + } + ], "source": [ - "# your code goes here\n" + "# your code goes here\n", + "\n", + "\n", + "# Función para calcular el saldo después de un año con interés\n", + "def calculate_balance_with_interest(account):\n", + " \"\"\"\n", + " Calcula el saldo después de un año con interés.\n", + "\n", + " Parameters:\n", + " account (dict): Un diccionario que contiene 'balance' y 'interest_rate'.\n", + "\n", + " Returns:\n", + " dict: Un diccionario con el saldo actualizado.\n", + " \"\"\"\n", + " balance = account['balance']\n", + " interest_rate = account['interest_rate']\n", + " \n", + " # Calcular el saldo después de un año con interés\n", + " updated_balance = balance * (1 + interest_rate)\n", + " \n", + " # Devolver un nuevo diccionario con el saldo actualizado\n", + " return {'balance': updated_balance, 'interest_rate': interest_rate}\n", + "\n", + "# Aplicar la función a la lista de cuentas usando map()\n", + "updated_accounts = list(map(calculate_balance_with_interest, accounts))\n", + "\n", + "# Mostrar la lista de cuentas actualizadas\n", + "print(\"Cuentas actualizadas después de un año con interés:\", updated_accounts)\n" ] }, { @@ -243,14 +359,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "6284dbd3-e117-411e-8087-352be6deaed4", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total de saldos negativos: -35\n" + ] + } + ], "source": [ "from functools import reduce\n", "\n", - "# your code goes here" + "# your code goes here\n", + "\n", + "# Lista de saldos actualizados después de aplicar un interés del 5%\n", + "updated_balances = [105.0, 52.5, -25, 1050.0, -10]\n", + "\n", + "# Filtrar los saldos negativos usando filter()\n", + "negative_balances = list(filter(lambda balance: balance < 0, updated_balances))\n", + "\n", + "# Calcular el total de los saldos negativos usando reduce()\n", + "total_negative_balances = reduce(lambda x, y: x + y, negative_balances, 0)\n", + "\n", + "# Mostrar el total de los saldos negativos\n", + "print(\"Total de saldos negativos:\", total_negative_balances)\n" ] }, { @@ -273,10 +409,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "id": "da2264b5-298e-4b45-99df-852b94e90d15", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saldos restantes después de los retiros: [650, 1600, 275]\n" + ] + } + ], "source": [ "accounts = [\n", " {'balance': 1000, 'withdrawals': [100, 50, 200]},\n", @@ -284,13 +428,39 @@ " {'balance': 500, 'withdrawals': [50, 100, 75]},\n", "]\n", "\n", - "# your code goes here\n" + "# your code goes here\n", + "\n", + "\n", + "# Función para calcular el saldo restante después de restar los retiros\n", + "def calculate_balance(account):\n", + " \"\"\"\n", + " Calcula el saldo restante después de restar todos los retiros.\n", + "\n", + " Parameters:\n", + " account (dict): Un diccionario que contiene 'balance' y 'withdrawals'.\n", + "\n", + " Returns:\n", + " float: El saldo restante después de restar los retiros.\n", + " \"\"\"\n", + " balance = account['balance']\n", + " withdrawals = account['withdrawals']\n", + " \n", + " # Restar todos los retiros del saldo\n", + " remaining_balance = balance - sum(withdrawals)\n", + " \n", + " return remaining_balance\n", + "\n", + "# Aplicar la función a la lista de cuentas usando map()\n", + "remaining_balances = list(map(calculate_balance, accounts))\n", + "\n", + "# Mostrar la lista de saldos restantes\n", + "print(\"Saldos restantes después de los retiros:\", remaining_balances)" ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" },