说我想要让很多用户给我他们的身份证号码和他们的名字,而不是保存。 而且我可以调用任何ID并获取名称。谁可以告诉我如何通过创建一个类并使用_ _ init _ _方法来做到这一点?
答案 0 :(得分:2)
正如@ Zonda的回答所说,“询问”部分可以在终端(Windows中的“命令窗口”)中使用raw_input
(或Python 3的input
);但它也可以使用Web应用程序或GUI应用程序 - 您并没有真正告诉我们用户的位置(在用于运行代码的同一台机器上,或者在代码中使用浏览器)在服务器上运行?)以及GUI或文本界面是否首选,因此无法提供更精确的建议。
对于存储和检索数据,@ aaron的回答中提到的SQL引擎是可能的(尽管有人可能会认为这是你想要保存的全部内容),但他建议使用pickle
的替代方法直接没有意义 - 我会推荐架子模块,它提供(几乎)相当于持久存储到磁盘的字典。 (但是,键只能是字符串 - 但即使你的ID是整数,也没问题,只需使用str(someid)
作为存储和检索的键。)
在一个真正奇怪的评论中,我看到你问......:
有没有办法通过制作一个 类?并使用
__init__
方法
当然有一种方法可以“在一个类中,使用__init__
方法”在函数中可以做的大多数事情 - 最坏的情况是,你编写所有代码(在一个合理的程序中) )在函数中,而不是__init__
方法(代替return
),将结果存入self.result
,然后获取奇怪无用实例的.result
属性你这样创造了。)
但是只有当你需要特殊方法或想要关联状态和行为时才使用类是没有任何意义的,并且你根本不解释为什么这两个条件应该在这里应用,这就是为什么我称你的请求“怪异” - 你绝对没有提供任何背景来解释为什么你根本不需要代替函数。
如果你能澄清你的动机(理想情况是通过编辑你的问题,或者更好的方式,再问一个单独的问题,但不通过在各种评论中扩展你的问题! - )也许可以提供帮助你进一步。
答案 1 :(得分: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()
答案 2 :(得分: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]