views:

64

answers:

3

say i want to ask the many users to give me their ID number and their name, than save it. and than i can call any ID and get the name. can someone tell me how i can do that by making a class and using the _ _ init _ _ method?

+1  A: 

To get data from a user, use this code (python 3).

ID = input("Enter your id: ")

In python 2, replace input with raw_input.

The same should can be done to get the users name.

This will save it to a variable, which can be used later in the program. If you want to save it to a file, use the following code:

w = open('\path\to\file.txt', 'w')
w.write(ID, age)
w.close()
Zonda333
+1  A: 

if you're not concerned with security, you can use the pickle module to pickle a dictionary.

import pickle

data = {}

# whatever you do to collect the data

data[id] = name
pickle.dump(data, filename)

new_data = pickle.load(filename)
new_name = new_data[id]
#new_name == name

otherwise use the sqlite3 module

import sqlite3

conn = sqlite3.connect(filename)
cur = conn.cursor()
cur.execute('CREATE TABLE IF NOT EXISTS names (id INTEGER, name TEXT)')

#do whatever you do to get the data

cur.execute('INSERT INTO names VALUES (?,?)', (id, name))


#to get the name later by id you would do...

cur.execute('SELECT name FROM names WHERE id = ?', (id, ))
name = cur.fetchone()[0]
aaronasterling
is there any way to do it by making a class? and using the _ _ init _ _ method?
babikar
+2  A: 

The "asking" part, as @Zonda's answer says, could use raw_input (or Python 3's input) at a terminal ("command window" in Windows); but it could also use a web application, or a GUI application -- you don't really tell us enough about where the users will be (on the same machine you're using to run your code, or at a browser while your code runs on a server?) and whether GUI or textual interfaces are preferred, so it's impossible to give more precise advice.

For storing and retrieving the data, a SQL engine as mentioned in @aaron's answer is a possibility (though some might consider it overkill if this is all you want to save), but his suggested alternative of using pickle directly makes little sense -- I would instead recommend the shelf module, which offers (just about) the equivalent of a dictionary persisted to disk. (Keys, however, can only be strings -- but even if your IDs are integers instead, that's no problem, just use str(someid) as the key both to store and to retrieve).

In a truly weird comment I see you ask...:

is there any way to do it by making a class? and using the __init__ method?

Of course there is a way to do "in a class, using the __init__ method" most anything you can do in a function -- at worst, you write all the code that would (in a sensible program) be in the function, in the __init__ method instead (in lieu of return, you stash the result in self.result and then get the .result attribute of the weirdly useless instance you have thus created).

But it makes any sense to use a class only when you need special methods, or want to associate state and behavior, and you don't at all explain why either condition should apply here, which is why I call your request "weird" -- you provide absolutely no context to explain why you would at all want that in lieu of functions.

If you can clarify your motivations (ideally by editing your question, or, even better, asking a separate one, but not by extending your question in sundry comments!-) maybe it's possible to help you further.

Alex Martelli
Ok Ok, you caught me on the relational database thing. I was mostly just pulling his/her leg. I am curious about what's wrong with `pickle` though.
aaronasterling
wooow im askin for help and ur pulling my leg!!!
babikar
@babikar, it was a valid answer. It's just that it's pretty obvious that you're trying to pawn off a homework assignment on us and you are not being incredibly clear about what you want. This whole `__init__` thing is pretty ridiculous. Do you want the class to model a user or a collection of users? What does 'save' mean in this context? To a file? to a database? for use later in the program? etc. etc. Essentially, ask a serious question and you will get a serious answer.
aaronasterling