| | |
Need help with a simple python program
Thread Solved
![]() |
•
•
Join Date: Aug 2005
Posts: 5
Reputation:
Solved Threads: 0
I'm completely new to python and really need help with this. I have written this basic cash fund program that allows a person to withdraw, deposit, and receive a balance from it. But now I need to now add email capabilities, by setting up a database (or list) of account holders' information such as email and other information. When a query is made by a user, they should enter a username or some other means of identification. When the query is accomplished, an email verification of the details should also be sent to the user. Please help! Here is my code so far:
Python Syntax (Toggle Plain Text)
from normalDate import ND today = ND() class Account: def __init__(self, initial): self.balance = initial def deposit(self, amt): self.balance = self.balance + amt def withdraw(self, amt): self.balance = self.balance - amt def getbalance(self): return self.balance a = Account( 1000.00 ) inputing = True while inputing: print "Welcome to the Firm's Petty Cash Fund" print '1) Deposit' print '2) Withdraw' print '3) Balance' print '4) Done' action = int(raw_input('Please choose the number next to action you wish to perform: ')) if action == 1: d = float(raw_input('Enter the amount the amount you have deposited: ')) print 'You have deposited:', '$',d, 'on', today.formatUS() a.deposit(d) print 'Your balance is now:', a.getbalance() fill = input('Press Enter to enter to the main menu: ') elif action == 2: w = float(raw_input('Enter the amount that you have withdrawn: ')) print 'You have withdrawn:', '$',w, 'on', today.formatUS() a.withdraw(w) print 'Your balance is now:', '$',a.getbalance() fill = input('Press Enter to enter to the main menu: ') elif action == 3: print 'The current balance for', today.formatUS(), 'is', '$',a.getbalance() fill = input('Press Enter to enter to the main menu: ') else: print 'Thank you!' inputing = False else: print 'done'
Hi cleblanc,
I need more information about how this program will be used if I am to provide useful information myself.
First off, is this program going to be used by people, or is it a mock-up/homework assignment?
If it's going to be used by people, it's not necessarily a "basic" program. How are the users going to access it? Is it going to be a webapp? Is it going to be a client-server program? If so, will the client have a GUI or a command-line interface? How will you keep me from logging in as someone else and stealing from them? If you use passwords, how will you secure them? Do you intend to let people have jointly-held accounts? If so, you need to worry about synchronization issues. Have you created a MySQL database to house account information? An SMTP server to send email from? Will you prevent people from overdrawing on their accounts? Are there two kinds of users (customers and administrators)? If so, your program needs to incorporate a way to distinguish between them. What OS are you using? What other platform information can you supply? And on and on.
If this is just a mock-up, things get a lot simpler. To store account information, I would just use an insecure text file with information "pickled" into it. Instructions on how to use pickle are included in vegaseat's "Starting Python" sticky thread.
Here's what to do: add two more fields (username and email) to your Account class. In the Python shell, import your Account class and create several Account objects, then pickle.dump() them to a text file.
Now that the foundation has been laid, the first thing your program should do is load all the Account objects from the text file via pickle.load(), then ask the user for a username. If it can't find the username in the loaded Account objects, it should terminate with an error message. Otherwise, it should proceed to the rest of the program. Every time you make a change to the balance, you should re-pickle the information.
If you want to send a record of the session by email, you'll need to create some kind of "history" list, such that every time a transaction is made, the history list gets appended to with a text description of what happened. Then, when the user logs out, send the email with the history list in the message.
To send emails, you're likely going to need to use the smtplib and email packages, which means you'll need to set up an SMTP server (or get access to an email account that allows automatic relaying). See here for details on how to use Python to send email; how to set up an SMTP server depends on which OS you're using.
I need more information about how this program will be used if I am to provide useful information myself.
First off, is this program going to be used by people, or is it a mock-up/homework assignment?
If it's going to be used by people, it's not necessarily a "basic" program. How are the users going to access it? Is it going to be a webapp? Is it going to be a client-server program? If so, will the client have a GUI or a command-line interface? How will you keep me from logging in as someone else and stealing from them? If you use passwords, how will you secure them? Do you intend to let people have jointly-held accounts? If so, you need to worry about synchronization issues. Have you created a MySQL database to house account information? An SMTP server to send email from? Will you prevent people from overdrawing on their accounts? Are there two kinds of users (customers and administrators)? If so, your program needs to incorporate a way to distinguish between them. What OS are you using? What other platform information can you supply? And on and on.
If this is just a mock-up, things get a lot simpler. To store account information, I would just use an insecure text file with information "pickled" into it. Instructions on how to use pickle are included in vegaseat's "Starting Python" sticky thread.
Here's what to do: add two more fields (username and email) to your Account class. In the Python shell, import your Account class and create several Account objects, then pickle.dump() them to a text file.
Now that the foundation has been laid, the first thing your program should do is load all the Account objects from the text file via pickle.load(), then ask the user for a username. If it can't find the username in the loaded Account objects, it should terminate with an error message. Otherwise, it should proceed to the rest of the program. Every time you make a change to the balance, you should re-pickle the information.
If you want to send a record of the session by email, you'll need to create some kind of "history" list, such that every time a transaction is made, the history list gets appended to with a text description of what happened. Then, when the user logs out, send the email with the history list in the message.
To send emails, you're likely going to need to use the smtplib and email packages, which means you'll need to set up an SMTP server (or get access to an email account that allows automatic relaying). See here for details on how to use Python to send email; how to set up an SMTP server depends on which OS you're using.
Vi veri veniversum vivus vici
•
•
Join Date: Aug 2005
Posts: 5
Reputation:
Solved Threads: 0
I tried adding the cPickle module to the code but can't seem to get it to work. I keep getting the following error:
Traceback (most recent call last):
File "C:\eclipse\workspace\External Files\Module 3\CSC113 Module3 SLP\firm's petty cash fund.py", line 20, in ?
load = p.load(f)
IOError: (0, 'Error')
Any help would be appreciated. Here is the code I have so far:
Traceback (most recent call last):
File "C:\eclipse\workspace\External Files\Module 3\CSC113 Module3 SLP\firm's petty cash fund.py", line 20, in ?
load = p.load(f)
IOError: (0, 'Error')
Any help would be appreciated. Here is the code I have so far:
Python Syntax (Toggle Plain Text)
import cPickle as p from normalDate import ND today = ND() class Account: def __init__(self, initial): self.balance = initial def deposit(self, amt): self.balance = self.balance + amt def withdraw(self, amt): self.balance = self.balance - amt def getbalance(self): return self.balance balanceFile = 'accountBalance.data' f= open(balanceFile, 'w') load = p.load(f) a = Account(load) inputing = True while inputing: print "Welcome to the Firm's Petty Cash Fund" print '1) Deposit' print '2) Withdraw' print '3) Balance' print '4) Done' action = int(raw_input('Please choose the number next to action you wish to perform: ')) if action == 1: d = float(raw_input('Enter the amount the amount you have deposited: ')) print 'You have deposited:', '$',d, 'on', today.formatUS() a.deposit(d) print 'Your balance is now:', a.getbalance() b = a.getbalance() p.dump(b, f) f.close() fill = input('Press Enter to enter to the main menu: ') elif action == 2: w = float(raw_input('Enter the amount that you have withdrawn: ')) print 'You have withdrawn:', '$',w, 'on', today.formatUS() a.withdraw(w) print 'Your balance is now:', '$',a.getbalance() b = a.getbalance() p.dump(b, f) f.close() fill = input('Press Enter to enter to the main menu: ') elif action == 3: print 'The current balance for', today.formatUS(), 'is', '$',a.getbalance() b = a.getbalance() p.dump(b, file) fill = input('Press Enter to enter to the main menu: ') else: print 'Thank you!' inputing = False else: print 'done'
Hi cleblanc,
It looks like you're trying to load from a file object that is opened for write-access. This is the code I'm talking about:
I don't know how cPickle works, because I've only ever used pickle, but with pickle.load() you need to specify a file object that has been opened with read-access, like so:
But beware! If the file is opened for read-access, you can't write to it without closing it first, and vice versa. To close a file object, you need to say:
Then re-open it with the type of access you need.
It looks like you're trying to load from a file object that is opened for write-access. This is the code I'm talking about:
Python Syntax (Toggle Plain Text)
balanceFile = 'accountBalance.data' f= open(balanceFile, 'w') load = p.load(f)
Python Syntax (Toggle Plain Text)
balanceFile = 'accountBalance.data' f= open(balanceFile, 'r') load = p.load(f)
Python Syntax (Toggle Plain Text)
f.close()
Vi veri veniversum vivus vici
![]() |
Similar Threads
- help needed with my assignment (C)
- running a process from a python program (Python)
- sourcing a python config file? (Python)
- writing a simple cat program (C)
Other Threads in the Python Forum
- Previous Thread: how to do two things at once?
- Next Thread: Testing the Psyco Module to Speed Up Python
| Thread Tools | Search this Thread |
abrupt accessdenied ansi anti apache application approximation argv array assignment backend beginner binary bluetooth builtin calculator change character converter countpasswordentry curved customdialog dan08 dictionary edit exe file float format function gnu heads homework ideas inches input java keyboard lapse leftmouse library line lines linux list lists loop microphone mouse movingimageswithpygame mysqlquery newb number numbers numeric output parameters parsing path phonebook pointer prime programming py2exe pygame pyopengl python random recursion redirect remote reverse scrolledtext session software sprite sqlite statictext statistics string strings syntax terminal text thread threading time tlapse tuple twoup ubuntu unicode unit urllib urllib2 variable wordgame write wxpython xlib






