6
\$\begingroup\$

For homework, I have to code a program in Python that effectively simulates a bank ATM.

print('Welcome to Northen Frock Bank ATM')
restart=('Y')
chances = 3
balance = 67.14
while chances >= 0:
 pin = int(input('Please Enter You 4 Digit Pin: '))
 if pin == (1234):
 print('You entered you pin Correctly\n')
 while restart not in ('n','NO','no','N'):
 print('Please Press 1 For Your Balance\n')
 print('Please Press 2 To Make a Withdrawl\n')
 print('Please Press 3 To Pay in\n')
 print('Please Press 4 To Return Card\n')
 option = int(input('What Would you like to choose?'))
 if option == 1:
 print('Your Balance is £',balance,'\n')
 restart = input('Would You you like to go back? ')
 if restart in ('n','NO','no','N'):
 print('Thank You')
 break
 elif option == 2:
 option2 = ('y')
 withdrawl = float(input('How Much Would you like to 
withdraw? \nÂ10ドル/Â20ドル/Â40ドル/Â60ドル/Â80ドル/Â100ドル for other enter 1: '))
 if withdrawl in [10, 20, 40, 60, 80, 100]:
 balance = balance - withdrawl
 print ('\nYour Balance is now £',balance)
 restart = input('Would You you like to go back? ')
 if restart in ('n','NO','no','N'):
 print('Thank You')
 break
 elif withdrawl != [10, 20, 40, 60, 80, 100]:
 print('Invalid Amount, Please Re-try\n')
 restart = ('y')
 elif withdrawl == 1:
 withdrawl = float(input('Please Enter Desired amount:')) 
 elif option == 3:
 Pay_in = float(input('How Much Would You Like To Pay In? '))
 balance = balance + Pay_in
 print ('\nYour Balance is now £',balance)
 restart = input('Would You you like to go back? ')
 if restart in ('n','NO','no','N'):
 print('Thank You')
 break
 elif option == 4:
 print('Please wait whilst your card is Returned...\n')
 print('Thank you for you service')
 break
 else:
 print('Please Enter a correct number. \n')
 restart = ('y')
 elif pin != ('1234'):
 print('Incorrect Password')
 chances = chances - 1
 if chances == 0:
 print('\nNo more tries')
 break

This program basically does what it is designed to do, but I want to learn how to use the def() and do it this way.

Jamal
35.2k13 gold badges134 silver badges238 bronze badges
asked Apr 6, 2014 at 18:32
\$\endgroup\$
1
  • \$\begingroup\$ this program didnot run it is syntax error in elif option==2: \$\endgroup\$ Commented Dec 26, 2015 at 3:34

1 Answer 1

9
\$\begingroup\$

The best way to do this would be to take each of your sections, and give them each a function of their own. Also, when it's possible, separate user input functions from purely logic to improve readability!

For example, it could start looking like this:

def verify_pin(pin):
 if pin == '1234':
 return True
 else:
 return False
def log_in():
 tries = 0
 while tries < 4:
 pin = input('Please Enter Your 4 Digit Pin: ')
 if verify_pin(pin):
 print("Pin accepted!")
 return True
 else:
 print("Invalid pin")
 tries += 1
 print("To many incorrect tries. Could not log in")
 return False
def start_menu():
 print("Welcome to the atm!")
 if log_in():
 # you will need to make this one yourself!
 main_menu()
 print("Exiting Program")
start_menu()

Whenever you can avoid nesting, you should. This makes it easier to read.

In this case you can clearly see logging in will open the main_menu (which you will have to write), and entering a correct pin is the only way to log in.

Toby Speight
88.9k14 gold badges104 silver badges327 bronze badges
answered Apr 6, 2014 at 19:27
\$\endgroup\$
0

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.