2010-07-27 85 views
0

說我想問很多用戶給我他們的ID號和他們的名字,比保存它。 和比我可以打電話任何ID和名稱。有人可以告訴我怎麼做,通過做一個類,並使用_ _ init _ _方法?保存數據和調用數據python

+2

魔法?如果你只問他們的身份證號碼和姓名,你怎麼能知道他們的年齡:^) – 2010-07-27 04:51:28

+0

對不起,我想說的名字.. – babikar 2010-07-27 04:54:09

+0

@Mark,在南非,身份證號碼的第一部分是出生日期。或者這是什麼ID號碼? – systemovich 2010-07-27 14:13:36

回答

1

要從用戶獲取數據,請使用此代碼(python 3)。

ID = input("Enter your id: ") 

在Python 2中,用raw_input替換輸入。

同樣應該可以做到獲取用戶名。

這將把它保存到一個變量中,以後可以在程序中使用它。如果要將其保存到文件,請使用以下代碼:

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

如果您不關心安全性,則可以使用pickle模塊來醃字典。

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 

否則使用sqlite3的模塊

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] 
+0

有沒有辦法通過做一個類來做到這一點?並使用_ _ init _ _方法? – babikar 2010-07-27 05:09:24

2

的 「要求」 部分,@風之子的回答說,可以在Windows中的一個終端( 「命令窗口」 使用raw_input(或Python 3的input) );但它也可以使用一個Web應用程序或一個GUI應用程序 - 你並沒有真正告訴我們用戶將在哪裏(在你用來運行代碼的同一臺機器上,或者在你的代碼的瀏覽器上在服務器上運行?)以及是否首選GUI或文本界面,因此不可能提供更精確的建議。

用於存儲和檢索數據,如@亞倫的答覆中提到一個SQL引擎是一種可能性(儘管有些人可能會矯枉過正,認爲如果這就是你想要保存),但他的建議的使用pickle的替代直接讓小意義 - 我會推薦擱板模塊,它提供(幾乎)相當於保存到磁盤的字典。 (但是,鍵只能是字符串 - 但即使您的ID是整數,這也沒有問題,只需使用str(someid)作爲存儲和檢索的關鍵字即可)。

在真正奇怪的評論我看你問...:

有沒有辦法通過使 類辦呢?並使用__init__ 方法?

當然有辦法做到「一類,使用__init__法」任何東西,你可以在一個函數做的 - 在最壞的情況,你寫的所有代碼,將(在一個合理的程序)在__init__方法中(代替return,您將結果存儲在self.result中,然後獲取由此創建的奇怪無用的實例的.result屬性)。

但是,只有當你需要特殊的方法,或者想要關聯狀態和行爲,而你完全沒有解釋爲什麼要在這裏應用任何一種情況時,才使用類,這就是爲什麼我打電話你的請求「怪異」 - 你提供的絕對沒有上下文來解釋爲什麼你會想要代替函數。

如果你能澄清你的動機(最好通過編輯你的問題,或者,甚至更好,問一個單獨的一個,但在各式各樣的評論擴展你的問題 - !)也許有可能進一步幫助您。

+0

好吧,好吧,你抓住了關於關係數據庫的事情。我大多隻是拉着他/她的腿。不過,我很好奇「pickle」有什麼問題。 – aaronasterling 2010-07-27 07:05:11

+0

wooow即時請求幫助和你拉我的腿! – babikar 2010-07-27 16:27:58

+0

@babikar,這是一個有效的答案。這只是很明顯,你正試圖從我們的家庭作業中分配一些東西,而且你對於你想要的東西不是非常清楚。這整個'__init__'事情是相當荒謬的。你想讓這個班級爲一個用戶或一組用戶建模嗎?在這種情況下,「保存」意味着什麼?到一個文件?到數據庫?以後在程序中使用?等等。基本上,問一個嚴肅的問題,你會得到一個認真的答案。 – aaronasterling 2010-07-28 02:07:07