diff --git a/lab-python-oop.ipynb b/lab-python-oop.ipynb index c13bc58..3079e54 100644 --- a/lab-python-oop.ipynb +++ b/lab-python-oop.ipynb @@ -56,21 +56,65 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "id": "21625526-3fae-4c55-bab5-f91940070681", "metadata": {}, "outputs": [], "source": [ - "# your code goes here\n", + "class BankAccount:\n", + " account_count = 0 # To keep track of number of accounts.\n", + "\n", + " def __init__(self, balance=0):\n", + " BankAccount.account_count += 1\n", + " self.account_number = BankAccount.account_count\n", + " self.balance = balance\n", + "\n", + " def deposit(self, amount):\n", + " if amount > 0:\n", + " self.balance += amount\n", + " print(f\"Deposited {amount} $. Current Balance: {self.balance} $.\")\n", + " else:\n", + " print(\"Invalid amount. Please enter a positive number.\")\n", + "\n", + " def withdraw(self, amount):\n", + " if self.balance >= amount > 0:\n", + " self.balance -= amount\n", + " print(f\"Withdrew {amount} $. Current balance: {self.balance} $.\")\n", + " else:\n", + " print(\"Insufficient funds or invalid withrawal amount.\")\n", + " \n", + "\n", + " def get_balance(self):\n", + " return self.balance\n", + "\n", + " def get_account_number(self):\n", + " return self.account_number\n", + "\n", "\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "id": "ee789466-d4cf-4dd8-b742-6863d42c3e5c", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Account 1 balance: 1000\n", + "Account 1 number: 1\n", + "Account 2 balance: 500\n", + "Account 2 number: 2\n", + "Deposited 500 $. Current Balance: 1500 $.\n", + "Withdrew 200 $. Current balance: 1300 $.\n", + "Account 1 balance after transactions: 1300\n", + "Insufficient funds or invalid withrawal amount.\n", + "Account 2 balance after transactions: 500\n" + ] + } + ], "source": [ "# Testing the BankAccount class\n", "# Creating two instances of the BankAccount class with initial balances of 1000 and 500\n", @@ -117,12 +161,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "id": "4f8848b5-05d3-4259-9e24-914537926778", "metadata": {}, "outputs": [], "source": [ - "# your code goes here" + "class SavingsAccount(BankAccount):\n", + " def __init__(self, balance=0, interest_rate=0.01):\n", + " super().__init__(balance)\n", + " self.interest_rate = interest_rate \n", + "\n", + " def add_interest(self):\n", + " interest=self.balance * self.interest_rate\n", + " self.deposit(interest)\n", + " print(f\"Deposited {interest} $ interest. New balance: {self.balance} $\")\n", + " \n", + " def get_interest_rate(self):\n", + " \n", + " return self.interest_rate\n", + " \n", + " \n" ] }, { @@ -151,14 +209,41 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "id": "bccc7f6d-d58c-4909-9314-aaf4afc1cd30", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Deposited 50 $. Current Balance: 150 $.\n", + "Withdrew 25 $. Current balance: 125 $.\n", + "Deposited 2.5 $. Current Balance: 127.5 $.\n", + "Deposited 2.5 $ interest. New balance: 127.5 $\n", + "Current balance: 127.5\n", + "Interest rate: 0.02\n" + ] + } + ], "source": [ - "# your code goes here" + "savings1=SavingsAccount(100, 0.02)\n", + "savings1.deposit(50) \n", + "savings1.withdraw(25)\n", + "savings1.add_interest()\n", + "\n", + "print(\"Current balance:\" , savings1.get_balance())\n", + "print(\"Interest rate:\", savings1.get_interest_rate())" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "93b172a9", + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "id": "a5455a88-a8d1-47a6-86b0-7c70647b4f31", @@ -189,12 +274,56 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 45, "id": "3c883c6e-3cb8-4043-92d3-12409668a28e", "metadata": {}, "outputs": [], "source": [ - "# your code goes here" + "class CheckingAccount(BankAccount):\n", + " \n", + " def __init__(self, balance=0, transaction_fee=1, transaction_count=0):\n", + " super().__init__(balance)\n", + " self.transaction_fee=transaction_fee\n", + " self.transaction_count= transaction_count\n", + "\n", + " def deposit(self, amount):\n", + " if amount > 0:\n", + " self.balance += amount\n", + " self.transaction_count += 1 # Increment transaction count\n", + " \n", + " else:\n", + " print(\"Invalid amount. Please enter a positive number.\")\n", + "\n", + " def withdraw(self, amount):\n", + " if self.balance >= amount > 0:\n", + " self.balance -= amount\n", + " self.transaction_count += 1 # Increment transaction count\n", + " \n", + " else:\n", + " print(\"Insufficient funds or invalid withdrawal amount\")\n", + "\n", + " def deduct(self):\n", + " \n", + " total_transaction_fee= self.transaction_fee * self.transaction_count # Calculate total transaction fee\n", + "\n", + " if self.balance >= total_transaction_fee > 0:\n", + " self.balance -= total_transaction_fee\n", + " print(f\"Transaction fees of {total_transaction_fee} $ have been deducted. \")\n", + " else:\n", + " print(\"Insufficient funds.\")\n", + " \n", + " self.transaction_count=0 #Reset the transaction count\n", + "\n", + " def get_transaction_count(self):\n", + " \n", + " return self.transaction_count\n", + " \n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n" ] }, { @@ -234,18 +363,41 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 46, "id": "faa5b148-c11b-4be0-b810-de8a7da81451", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Transaction fees of 4 $ have been deducted. \n", + "Current balance is: 546\n", + "Current transaction count is: 0\n", + "Transaction fees of 4 $ have been deducted. \n", + "Current balance is: 667\n", + "Current transaction count is: 0\n" + ] + } + ], "source": [ - "# your code goes here" + "checking1= CheckingAccount(500,2)\n", + "checking1.deposit(100)\n", + "checking1.withdraw(50)\n", + "checking1.deduct()\n", + "print(\"Current balance is:\",checking1.get_balance())\n", + "print(\"Current transaction count is:\", checking1.get_transaction_count())\n", + "checking1.deposit(200)\n", + "checking1.withdraw(75)\n", + "checking1.deduct()\n", + "print(\"Current balance is:\",checking1.get_balance())\n", + "print(\"Current transaction count is:\", checking1.get_transaction_count())\n" ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -259,7 +411,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.12.7" } }, "nbformat": 4,