# Bank Teller Complete........ ish

I have a glitch in a code that I wanted to solve: it’s on No. 19 of the “Bank Teller Project”. For some reason I can’t understand, the code tries to transfer 25 from savings to checking despite when calling the acc_transfer() with the amount argument as 5. Anyone have any ideas why this may be happening? Thanks in advance.

``````checking_balance = 0
savings_balance = 0

def check_balance(account_type, checking_balance, savings_balance):
# My own input: Input foolproofing
account_type = account_type.lower()
if account_type == "saving":
account_type = "savings"
elif account_type == "checkings":
account_type = "checking"
# Step2 Checking if it is a checking balance or a savings balance
if account_type == "checking":
# Step 4 Assigning the checking balance
balance = checking_balance
elif account_type == "savings":
# Step 3: Assigning the savings balance
balance = savings_balance
# Step 5: Error handling.
else:
return "Unsuccessful, please enter \"checking\" or \"savings\""
# Step 6: Creating a balance statement
balance_statement = "Your %s balance is %s" % (account_type, balance)

return balance_statement

# 3. Calling and Printing the check_balance() function for Checking Account
print(check_balance("checking", checking_balance, savings_balance))
# 4. Calling and Printing the check_balance() function for Savings Account
print(check_balance("savings", checking_balance, savings_balance))

# 5. make_deposit function

def make_deposit(account_type, amount, checking_balance, savings_balance):
# My own input: Input foolproofing
account_type = account_type.lower()
if account_type == "saving":
account_type = "savings"
elif account_type == "checkings":
account_type = "checking"
# Step 2. Defining deposit_status as an empty string
deposit_status = ""
# Step 3.  if statement that checks whether the passed in amount is greater than 0
if amount > 0:
# Step 5. Sorting between savings and checking
if account_type == "savings":
# Step 6: Depositing to savings account
savings_balance += amount
deposit_status = "successful"
# Step 7:: If the account is a checking balance
elif account_type == "checking":
checking_balance += amount
deposit_status = "successful"
# Step 8: Error message if account type input error
else:
deposit_status = "unsuccessful, please enter \"checking\" or \"savings\""
# Step 4. Error message if amount less than zero
else:
deposit_status = "unsuccessful, please enter an amount greater than 0."
# Step 9: Outside of all the if statements but still in the function, compose a statement composing of strings and variables used in this function. Then assign it to the new deposit_statement variable. The statement should be: "Deposit of amount to your account_type account was deposit_status".
deposit_statement = "Deposit of %s to your %s account was %s" % (
amount, account_type, deposit_status)
# Step 10: Printing deposit statement
print(deposit_statement)
# Step 11: Returning both savings balance and checking balance
return checking_balance, savings_balance

# 6  call the make_deposit() function with these arguments; "savings", 10,checking_balance and savings_balance
checking_balance, savings_balance = make_deposit(
"savings", 10, checking_balance, savings_balance)
# 7 Print savings balance call after making a savings deposit
print(check_balance("savings", checking_balance, savings_balance))
# 8  call the make_deposit() function with these arguments; "checking", 200,checking_balance and savings_balance
checking_balance, savings_balance = make_deposit(
"checking", 200, checking_balance, savings_balance)
# 9 check_balance() function with these arguments; "checking", checking_balance and savings_balance and print it
print(check_balance("checking", checking_balance, savings_balance))

# 10 Making a withdrawal function
# Step 1: Defining function

def make_withdrawal(account_type, amount, checking_balance, savings_balance):
# My own input: Input foolproofing
account_type = account_type.lower()
if account_type == "saving":
account_type = "savings"
elif account_type == "checkings":
account_type = "checking"
# Step 2: Initialising withdrawal_status
withdrawal_status = ""
# Step 3: Initialise error message
fail = "unsuccessful, please enter an amount less than balance."
# Step 4: Check account_type
if account_type == "savings":
# Step 5: Withdrawal from savings account
# Step 6: Ensuring withdrawal amount is no bigger than the savings balance
if amount <= savings_balance:
# Step 7: SUbtracting amount from the savings account and updating withdrawal status
savings_balance -= amount
withdrawal_status = "successful"
else:
withdrawal_status = fail
# Step 8 Withdrawing from checking account
elif account_type == "checking":
# Step 9 Ensuring amount does not exceed balance
if amount <= checking_balance:
# Step 10: Subtracting amount from checking balance
checking_balance -= amount
withdrawal_status = "successful"
else:
withdrawal_status = fail
# Step 11: Resolving input errors
else:
withdrawal_status = "unsuccessful. Please enter either \"checking\" or \"savings\"."
# Step 12: Creating a withdrawal statement
wtihdrawal_statement = "Youur withdrawal of %s from %s was %s" % (
amount, account_type, withdrawal_status)
# Step 13: Printing withdrawal statement
print(wtihdrawal_statement)
return checking_balance, savings_balance

# 11. call the make_withdrawal() function with these arguments: "savings", 11,checking_balance and savings_balance. Assign the function call to the matching checking_balance and savings_balance variables
checking_balance, savings_balance = make_withdrawal(
"savings", 11, checking_balance, savings_balance)

# 12. Call the check_balance() function with these arguments; "savings", checking_balance and savings_balance within a print function. Your new savings balance should print.
print(check_balance("savings", checking_balance, savings_balance))

# 13.  call the make_withdrawal() function with these arguments; "checking", 170,checking_balance and savings_balance. Assign the function call to the matching checking_balance and savings_balance variables that are also being returned by the function.
checking_balance, savings_balance = make_withdrawal(
"checking", 170, checking_balance, savings_balance)

# 14. Call the check_balance() function with these arguments; "checking", checking_balance and savings_balance within a print function
print(check_balance("checking", checking_balance, savings_balance))

# 15 15. Create a function to make a transfer between accounts

# Step 1: define function

def acc_transfer(acc_from, acc_to, amount, checking_balance, savings_balance):
# My own input: Input foolproofing
acc_from = acc_from.lower()
if acc_from == "saving":
acc_from = "savings"
elif acc_from == "checkings":
acc_from = "checking"

acc_to = acc_to.lower()
if acc_to == "saving":
acc_to = "savings"
elif acc_to == "checkings":
acc_to = "checking"
# Step 2: Initialise transaction_status
transaction_status = ""
# Step 3: Initialise error message
trans_error = "unsuccessful. Please enter amount less than "
# Step 4: Account transfer

# Checking to savings
if acc_from == "checking" and acc_to == "savings":
# Step 5: Ensuring amount does not exceed checking balance
if amount <= checking_balance:
# Step 6: Transferring amount from checking to savings
amount -= checking_balance
amount += savings_balance
transaction_status = "successful"
else:
transaction_status = trans_error + str(checking_balance)
# Savings to checking
elif acc_from == "savings" and acc_to == "checking":
# Step 7. Ensuring amount does not exceed savings account
if amount <= savings_balance:
#Step 8: Transferring from savings to checking (see Step 6 for corresponding transfer)
amount -= savings_balance
amount += checking_balance
transaction_status = "successful"
else:
transaction_status = trans_error + str(savings_balance)
#Step 9: Error in the else statement
else:
transaction_status = "unsuccessful, please enter \"checking\" or \"savings\""
#Step 10: Creating transfer_statement
transaction_statement = "Transfer of %s from your %s to your %s account was %s." % (amount, acc_from, acc_to, transaction_status)
#Step 11: Printing transfer_statement
print (transaction_statement)
#Step 12: Return checking statement and savings statement
return checking_balance, savings_balance

#16.  call the acc_transfer() function with these arguments; "checking", "savings", 40,checking_balance and savings_balance. Assign the function call to the matching checking_balance and savings_balance
checking_balance, savings_balance = acc_transfer("checking", "savings", 40, checking_balance, savings_balance)

#17. print your checking balance. Call the check_balance() function with these arguments; "checking", checking_balance and savings_balance within a print function.
print(check_balance("checking", checking_balance, savings_balance))
#18. Print savings
print(check_balance("savings", checking_balance, savings_balance))
#19 Transfer 5 from savings to checking (I transfer 25 on VSCode somehow despite amount being 5)
checking_balance, savings_balance = acc_transfer("savings", "checking", 5, checking_balance, savings_balance)

print(check_balance("checking", checking_balance, savings_balance))

print(check_balance("savings", checking_balance, savings_balance))

``````

here:

`````` elif acc_from == "savings" and acc_to == "checking":
print(amount, savings_balance)
# Step 7. Ensuring amount does not exceed savings account
if amount <= savings_balance:
#Step 8: Transferring from savings to checking (see Step 6 for corresponding transfer)
amount -= savings_balance
amount += checking_balance
``````

those last two lines look worrying

`amount` seems to be the amount you want to transfer. I haven’t done this project, but I would then argue you should decrease savings and increase checking balance. Yet you do the opposite. You decrease amount by your saving balance, and increase amount by your checking balance.

Thank you! That was exactly what has fixed it!

same applies when checking to saving. I hope you caught that

I have indeed! Thank you for that!