Chapter 10 Activity Solution Guide

Activity Solution: ATM


In this activity, students will complete a banking simulation using three separate source files:

  • - written by the student, contains the main program code
  • - written by the student, contains the ATM class
  • - provided for the student, contains the Validator object

The ATM class keeps a running balance as internal data, and provides simple deposit(), withdraw(), and get_balance() functions. The main code will get user input using the Validator object and pass those amounts into ATM functions, printing the resulting balance to the screen. In addition to new class-related skills, this activity re-enforces existing concepts around user input validation and numeric conversions.

Activity Solution Code

The following solution code demonstrates a complete program with all three files.

# Student Name

# import source files

import Bank

import Input

# use the Bank.ATM to get current balance

balance = Bank.ATM.get_balance()

print(str.format("Starting Balance: ${:.2f}",balance))

# make a deposit and withdrawal based on user input

amount = Input.Validator.get_float("Please enter deposit amount ($0.00 - $1000.00): ",0.00,1000.00)

balance = Bank.ATM.deposit(amount)

print(str.format("New Balance: ${:.2f}",balance))

amount = Input.Validator.get_float("Please enter withdrawal amount ($0.00 - $1000.00): ",0.00,1000.00)

balance = Bank.ATM.withdraw(amount)

print(str.format("New Balance: ${:.2f}",balance))

# Student Name

class ATM:

  balance = 20.00          # initialize starting balance

  # define the deposit() function

  def deposit(amount):

    print(str.format("Depositing ${:.2f}",amount))

    ATM.balance = ATM.balance + amount

    return ATM.balance

  # define the withdraw() function

  def withdraw(amount):

    # verify sufficient funds before withdrawal

    if (ATM.balance >= amount):

      print(str.format("Withdrawing ${:.2f}",amount))

      ATM.balance = ATM.balance - amount


      print("Insufficient funds")

    return ATM.balance

  # define the get_balance() function

  def get_balance():

    return ATM.balance

class Validator:

  def get_integer(prompt, min, max):

    # loop until correct input received

    while True:


        inputString = input(prompt)  # get user input

        inputInt = int(inputString)  # try to convert to int

        if (inputInt >= min) and (inputInt <= max):  # verify range

          return inputInt            # success!


         continue                    # try again

  def get_float(prompt, min, max):

    # loop until correct input received

    while True:


        inputString = input(prompt)      # get user input

        inputFloat = float(inputString)  # try to convert to float

        if (inputFloat >= min) and (inputFloat <= max):  # verify range

          return inputFloat          # success!


         continue                    # try again

Last modified: Sunday, 18 August 2019, 10:13 PM