Bank Accounts

\[ \begin{align}\begin{aligned}\newcommand\blank{~\underline{\hspace{1.2cm}}~}\\% Bold symbols (vectors) \newcommand\bs[1]{\mathbf{#1}}\\% Poor man's siunitx \newcommand\unit[1]{\mathrm{#1}} \newcommand\num[1]{#1} \newcommand\qty[2]{#1~\unit{#2}}\\\newcommand\per{/} \newcommand\squared{{}^2} % % Scale \newcommand\milli{\unit{m}} \newcommand\centi{\unit{c}} \newcommand\kilo{\unit{k}} \newcommand\mega{\unit{M}} % % Angle \newcommand\radian{\unit{rad}} \newcommand\degree{\unit{{}^\circ}} % % Time \newcommand\second{\unit{s}} % % Distance \newcommand\meter{\unit{m}} \newcommand\m{\meter} \newcommand\inch{\unit{in}} \newcommand\feet{\unit{ft}} \newcommand\mile{\unit{mi}} \newcommand\mi{\mile} % % Volume \newcommand\gallon{\unit{gal}} % % Mass \newcommand\gram{\unit{g}} \newcommand\g{\gram} % % Frequency \newcommand\hertz{\unit{Hz}} \newcommand\rpm{\unit{rpm}} % % Voltage \newcommand\volt{\unit{V}} \newcommand\V{\volt} \newcommand\millivolt{\milli\volt} \newcommand\mV{\milli\volt} \newcommand\kilovolt{\kilo\volt} \newcommand\kV{\kilo\volt} % % Current \newcommand\ampere{\unit{A}} \newcommand\A{\ampere} \newcommand\milliampereA{\milli\ampere} \newcommand\mA{\milli\ampere} \newcommand\kiloampereA{\kilo\ampere} \newcommand\kA{\kilo\ampere} % % Resistance \newcommand\ohm{\Omega} \newcommand\milliohm{\milli\ohm} \newcommand\kiloohm{\kilo\ohm} % correct SI spelling \newcommand\kilohm{\kilo\ohm} % "American" spelling used in siunitx \newcommand\megaohm{\mega\ohm} % correct SI spelling \newcommand\megohm{\mega\ohm} % "American" spelling used in siunitx % % Inductance \newcommand\henry{\unit{H}} \newcommand\H{\henry} \newcommand\millihenry{\milli\henry} \newcommand\mH{\milli\henry} % % Temperature \newcommand\celsius{\unit{^{\circ}C}} \newcommand\C{\unit{\celsius}} \newcommand\fahrenheit{\unit{^{\circ}F}} \newcommand\F{\unit{\fahrenheit}} \newcommand\kelvin{\unit{\K}} \newcommand\K{\unit{\kelvin}}\\% Power \newcommand\watt{\unit{W}} \newcommand\W{\watt} \newcommand\milliwatt{\milli\watt} \newcommand\mW{\milli\watt} \newcommand\kilowatt{\kilo\watt} \newcommand\kW{\kilo\watt} % % Torque \newcommand\ozin{\unit{oz}\text{-}\unit{in}} \newcommand\newtonmeter{\unit{N\text{-}m}}\end{aligned}\end{align} \]

Apr 16, 2025 | 293 words | 3 min read

11.2.4. Bank Accounts#

Instructions#

Write a class named Account with an attribute named balance that tracks the amount of money in the account, and methods named deposit, withdraw, and get_balance. During instantiation, the balance attribute should be set, and a line stating the new account balance should be printed. The deposit method has an amount parameter, should print the amount being deposited, and also add that amount to the account’s balance. The withdraw method also has an amount parameter, should print the amount being withdrawn, and subtract that amount from the account’s balance. If the account’s balance is less than the amount being withdrawn, the withdrawal should be canceled (e.g. an error will be printed and nothing will be subtracted from the account balance). The get_balance method simply prints the account’s balance.

Next, write a Savings class that inherits from Account. This class should have all the same attributes and methods as Account plus an attribute named interest_rate and a method named accrue_interest. This method calculates an interest payment by multiplying the account’s balance by the interest rate. Then it prints the amount of the interest payment and adds it to the account’s balance.

\[\text{interest payment} = \text{balance} * \text{interest rate}\]

In the main function of your program, instantiate an instance of the Savings class with a $\(200\) balance and an interest rate of \(10\%\). Then make deposits, withdrawals, and interest payments to match the account activity shown in the sample below.

Sample Output#

Ensure your program’s output matches the provided samples exactly. This includes all characters, white space, and punctuation. In the samples, user input is highlighted like this for clarity, but your program should not highlight user input in this way.

Sample Output

$ python3 bank_accounts_login.py New account balance: $200.00 Balance: $200.00 Deposit: $12.34 Balance: $212.34 Withdraw: $40.00 Balance: $172.34 Withdraw: $200.00 Insufficient funds. Withdrawal canceled. Balance: $172.34 Interest payment: $17.23 Interest payment: $18.96 Interest payment: $20.85 Withdraw: $200.00 Balance: $29.38

Deliverables#

Save your finished program as bank_accounts_login.py, replacing login with your Purdue login. Then submit it along with all the deliverables listed in Table 11.6 below.

Table 11.6 Deliverables#

Deliverable

Description

bank_accounts_login.py

Your finished program.

Screenshot(s)

PNG(s) capturing the test case.