python programming -use python 3

haha
template_skeletoncode.py

#!/usr/bin/env python import math class Bank(object): """Keeps track of number of accountants, clients, and bank accounts""" def __init__(self, name): self.name = name self.accountants = [] def add_accountant(self, accountant): """Add an accounted to list of accountants""" pass def get_accountant(self, accountant_name): """Get an accountant from list of accountants via their name""" pass def get_number_of_accountants(self): """Calculate the number of accountants the bank has""" pass def get_number_of_clients(self): """Calculate the number of clients the bank has""" pass def total_in_checking(self): """Calculate total amount of money in checking from all clients from all accountants combined""" pass def total_in_savings(self): """Calculate total amount of money in savings from all clients from all accountants combined""" pass def total_loaned_out(self): """Calculate total amount of money loaned out from all clients from all accountants combined""" pass def calculate_total_profit(self): """Calculate total amount of profit from all accountants combined""" pass class Accountant(object): """Keep track of clients for an accountant""" def __init__(self, name): self.name = name self.clients = [] def add_client(self, client): """Add a client object to list of clients""" pass def get_client(self, client_name): """Get a client from list of clients via it's name""" pass def get_number_of_clients(self): """Calculate the number of clients the accountant has""" pass def total_in_checking(self): """Calculate total amount of money in checking from all clients combined""" pass def total_in_savings(self): """Calculate total amount of money in savings from all clients combined""" pass def total_loaned_out(self): """Calculate total amount of money loaned out from all clients combined""" pass def calculate_total_profit(self): """Calculate total amount of interest from all clients combined""" pass class Client(object): """Keep track of clients for an accountant""" def __init__(self, name, total_savings, total_checking, loan): self.name = name self.total_savings = total_savings self.total_checking = total_checking self.loan = loan def total_in_checking(self): """Return total amount in checking""" pass def total_in_savings(self): """Return total amount in savings""" pass def total_borrowed(self): """Return amount of money borrowed""" pass def total_interest(self): """Return the amount of interest needed to pay""" pass def total_owed(self): """Return total amount of money needed to pay""" pass def create_banks_from_file(input_csv): """Given an input csv file, create a list of banks with all Loans, Clients and Accountants correctly formed :param input_csv: path to input csv file :return: list of Bank objects """ pass def main(): """Tests""" ############################################################################################# # TODO put correct paths to both files banking_file1 = "banking_statement.csv" banking_file2 = "banking_statement2.csv" ############################################################################################# # DO NOT CHANGE ANYTHING BELOW HERE # Testing Loan loan1 = Loan(100, 0.1, 10) assert math.isclose(loan1.principal, 100, abs_tol=0.00001), "{} != {}".format(loan1.principal, 100) assert math.isclose(loan1.rate, 0.1, abs_tol=0.00001), "{} != {}".format(loan1.rate, 0.1) assert math.isclose(loan1.time, 10, abs_tol=0.00001), "{} != {}".format(loan1.time, 10) assert math.isclose(loan1.calculate_monthly_payment(), 16.274539488251154, abs_tol=0.00001), "{} != {}".format(loan1.calculate_monthly_payment(), 16.274539488251154) assert math.isclose(loan1.calculate_total_interest(), 62.74539488251153, abs_tol=0.00001), "{} != {}".format(loan1.calculate_total_interest(), 62.74539488251153) assert math.isclose(loan1.calculate_total_owed(), 162.74539488251153, abs_tol=0.00001), "{} != {}".format(loan1.calculate_total_owed(), 162.74539488251153) loan1 = Loan(0, 0, 0) assert math.isclose(loan1.calculate_total_owed(), 0, abs_tol=0.00001), "{} != {}".format(loan1.calculate_total_owed(), 0) loan1 = Loan(100, 0.1, 10) # Testing Client client1 = Client("client1", 1000, 2000, loan1) assert client1.name == "client1", "{} != {}".format(client1.name, "client1") assert math.isclose(client1.total_savings, 1000, abs_tol=0.00001), "{} != {}".format(client1.total_savings, 1000) assert math.isclose(client1.total_in_savings(), 1000, abs_tol=0.00001), "{} != {}".format(client1.total_in_savings(), 1000) assert math.isclose(client1.total_checking, 2000, abs_tol=0.00001), "{} != {}".format(client1.total_checking, 2000) assert math.isclose(client1.total_in_checking(), 2000, abs_tol=0.00001), "{} != {}".format(client1.total_in_checking(), 2000) assert math.isclose(client1.total_borrowed(), 100, abs_tol=0.00001), "{} != {}".format(client1.total_borrowed(), 100) assert math.isclose(client1.total_interest(), 62.74539488251153, abs_tol=0.00001), "{} != {}".format(client1.total_interest(), 62.74539488251153) assert math.isclose(client1.total_owed(), 162.74539488251153, abs_tol=0.00001), "{} != {}".format(client1.total_owed(), 162.74539488251153) # Testing Accountant accountant1 = Accountant("acct1") assert accountant1.name == "acct1", "{} != {}".format(accountant1.name, "acct1") assert accountant1.get_client("client1") is None accountant1.add_client(client1) assert accountant1.get_client("client1") is client1 assert math.isclose(accountant1.get_number_of_clients(), 1, abs_tol=0.00001), "{} != {}".format(accountant1.get_number_of_clients(), 1) assert math.isclose(accountant1.total_in_savings(), 1000, abs_tol=0.00001), "{} != {}".format(accountant1.total_in_savings(), 1000) assert math.isclose(accountant1.total_in_checking(), 2000, abs_tol=0.00001), "{} != {}".format(accountant1.total_in_checking(), 2000) assert math.isclose(accountant1.total_loaned_out(), 100, abs_tol=0.00001), "{} != {}".format(accountant1.total_loaned_out(), 100) assert math.isclose(accountant1.calculate_total_profit(), 62.74539488251153, abs_tol=0.00001), \ "{} != {}".format(accountant1.calculate_total_profit(), 62.74539488251153) client2 = Client("client2", 1000, 2000, Loan(100, 0.1, 20)) accountant1.add_client(client2) assert math.isclose(accountant1.get_number_of_clients(), 2, abs_tol=0.00001), "{} != {}".format(accountant1.get_number_of_clients(), 2) assert math.isclose(accountant1.total_in_savings(), 2000, abs_tol=0.00001), "{} != {}".format(accountant1.total_in_savings(), 2000) assert math.isclose(accountant1.total_in_checking(), 4000, abs_tol=0.00001), "{} != {}".format(accountant1.total_in_checking(), 4000) assert math.isclose(accountant1.total_loaned_out(), 200, abs_tol=0.00001), "{} != {}".format(accountant1.total_loaned_out(), 200) assert math.isclose(accountant1.calculate_total_profit(), 197.66464442760306, abs_tol=0.00001),\ "{} != {}".format(accountant1.calculate_total_profit(), 197.66464442760306) # Testing Bank bank = Bank("boa") assert bank.name == "boa", "{} != {}".format(bank.name, "boa") assert bank.get_accountant("acct1") is None bank.add_accountant(accountant1) assert bank.get_accountant("acct1") is accountant1 assert math.isclose(bank.get_number_of_accountants(), 1, abs_tol=0.00001), "{} != {}".format(bank.get_number_of_accountants(), 1) assert math.isclose(bank.get_number_of_clients(), 2, abs_tol=0.00001), "{} != {}".format(bank.get_number_of_clients(), 2) assert math.isclose(bank.total_in_savings(), 2000, abs_tol=0.00001), "{} != {}".format(bank.total_in_savings(), 2000) assert math.isclose(bank.total_in_checking(), 4000, abs_tol=0.00001), "{} != {}".format(bank.total_in_checking(), 4000) assert math.isclose(bank.total_loaned_out(), 200, abs_tol=0.00001), "{} != {}".format(bank.total_loaned_out(), 200) assert math.isclose(bank.calculate_total_profit(), 197.66464442760306, abs_tol=0.00001), \ "{} != {}".format(bank.calculate_total_profit(), 197.66464442760306) # Testing create_banks_from_file # banking_statement.csv all_banks = create_banks_from_file(banking_file1) test_bank = all_banks[0] assert test_bank.name == "boa", "{} != {}".format(test_bank.name, "boa") assert math.isclose(test_bank.get_number_of_accountants(), 1, abs_tol=0.00001), "{} != {}".format(test_bank.get_number_of_accountants(), 1) assert math.isclose(test_bank.get_number_of_clients(), 2, abs_tol=0.00001), "{} != {}".format(test_bank.get_number_of_clients(), 2) assert math.isclose(test_bank.total_in_savings(), 2000, abs_tol=0.00001), "{} != {}".format(test_bank.total_in_savings(), 2000) assert math.isclose(test_bank.total_in_checking(), 4000, abs_tol=0.00001), "{} != {}".format(test_bank.total_in_checking(), 4000) assert math.isclose(test_bank.total_loaned_out(), 200, abs_tol=0.00001), "{} != {}".format(test_bank.total_loaned_out(), 200) assert math.isclose(test_bank.calculate_total_profit(), 197.66464442760306, abs_tol=0.00001), \ "{} != {}".format(test_bank.calculate_total_profit(), 197.66464442760306) # banking_statement2.csv all_banks = create_banks_from_file(banking_file2) assert math.isclose(len(all_banks), 2, abs_tol=0.00001), "{} != {}".format(len(all_banks), 2) boa_bank = all_banks[0] assert boa_bank.name == "boa", "{} != {}".format(boa_bank.name, "boa") assert math.isclose(boa_bank.get_number_of_accountants(), 2, abs_tol=0.00001), "{} != {}".format(boa_bank.get_number_of_accountants(), 2) assert math.isclose(boa_bank.get_number_of_clients(), 3, abs_tol=0.00001), "{} != {}".format(boa_bank.get_number_of_clients(), 3) assert math.isclose(boa_bank.total_in_savings(), 3000, abs_tol=0.00001), "{} != {}".format(boa_bank.total_in_savings(), 3000) assert math.isclose(boa_bank.total_in_checking(), 6000, abs_tol=0.00001), "{} != {}".format(boa_bank.total_in_checking(), 6000) assert math.isclose(boa_bank.total_loaned_out(), 130, abs_tol=0.00001), "{} != {}".format(boa_bank.total_loaned_out(), 130) assert math.isclose(boa_bank.calculate_total_profit(), 88.786398813523, abs_tol=0.00001), \ "{} != {}".format(boa_bank.calculate_total_profit(), 88.786398813523) chase_bank = all_banks[1] assert chase_bank.name == "chase", "{} != {}".format(chase_bank.name, "chase") assert math.isclose(chase_bank.get_number_of_accountants(), 1, abs_tol=0.00001), "{} != {}".format(chase_bank.get_number_of_accountants(), 1) assert math.isclose(chase_bank.get_number_of_clients(), 3, abs_tol=0.00001), "{} != {}".format(chase_bank.get_number_of_clients(), 3) assert math.isclose(chase_bank.total_in_savings(), 3000, abs_tol=0.00001), "{} != {}".format(chase_bank.total_in_savings(), 3000) assert math.isclose(chase_bank.total_in_checking(), 6000, abs_tol=0.00001), "{} != {}".format(chase_bank.total_in_checking(), 6000) assert math.isclose(chase_bank.total_loaned_out(), 0, abs_tol=0.00001), "{} != {}".format(chase_bank.total_loaned_out(), 0) assert math.isclose(chase_bank.calculate_total_profit(), 0, abs_tol=0.00001), \ "{} != {}".format(chase_bank.calculate_total_profit(), 0) if __name__ == '__main__': main()