7

我想使用python创建一个登录系统。

这是我正在做的一个小项目,以便我可以掌握python并最终将其发送给webpage我正在创建的项目。

截至目前,我有这个:

user = raw_input('Create Username: ')
password = raw_input('Create Password: ')
store_user =[roger, Jon]
store_pass =[tennis, soccer]

store_user.append(user)
store_pass.append(password)

if user in store_user:
    print "That user already exsist"

while 1 == 1:
    userguess=""
    passwordguess=""
    key=""
    while (userguess != user) or (passwordguess != password):
        userguess = raw_input('User Name: ')
        passwordguess = raw_input('Password:')

    print "Welcome,",user, ". Type Lock to Lock or Type Create to create another user."
    print store_user
    print store_pass

    while key != "lock":
        key = raw_input("")

这使您可以创建用户名和密码并将它们存储在列表中。我加入了 if 语句来检查列表以查看用户是否已经存在(但我认为这不起作用)

我只是想要一些关于如何让整个事情循环的指导:例如,您选择是否登录,登录后您可以选择创建另一个,它会检查该用户是否已经存在。

非常感谢!

4

3 回答 3

5

让我们一步一步来:

首先,检查用户是否存在总是会告诉你它确实存在,因为你正在添加用户,然后检查它是否存在。所以你写的 if 语句是可以的,但是把它放在store_user.append:

if user in store_user:
    print "That user already exsist"
else:
    store_user.append(user)
    store_pass.append(password)

其次,您编写的条件while 1 == 1:是无用的(但仍然正确),您可以这样做while 1(因为 1 评估为 True)甚至更好while True:

第三,用户名/密码检查只检查最后一个用户和密码。如果您使用userguess in store_user和相同的密码,您将不会得到预期的结果。因此,您需要使用字典而不是列表。使用这些,您可以将key分配给value。在您的情况下,用户需要密码,因此您将拥有:

store = dict()
# the code to get the user/password
store[user] = password # you "save" the value password for the key user

# then to check:
while not (userguess in store and store[userguess] == passwordguess):
   # try again

阅读有关词典的更多信息。

然后,您可以将每个“逻辑”过程存储在一个函数中,以使您的代码更具可读性和可重用性。例如:

def add_user(store):
    user = raw_input('Create Username: ')
    password = raw_input('Create Password: ')
    if user in store:
        print "That user already exsist"
        return False
    else:
        store[user] = password
        return True

# and call this 10 times for example...
global_store = dict()
for i in range(10):
    add_user(global_store)

(更不用说使用类等)对检查密码部分执行相同的操作,然后您可以使用您所做的循环进行一些更改来执行您期望的操作...

我希望我很清楚,并且我有所帮助:)

于 2012-04-24T20:11:36.340 回答
3

这可能不是您所期望的答案,但它就是这样:不要重新发明轮子。

尽可能使用现有工具,并专注于您无法免费获得的功能。

于 2012-04-25T07:45:39.267 回答
2

这是一个好的开始。我建议您查看:http ://www.greenteapress.com/thinkpython/ ,使用像字典这样的数据结构将大大简化这项任务。

要查看某个项目是否已经在列表中,您可以遍历它;

for item in list:
    if input == item:
        # item is in list
        break
    # item is not in list

一种可能也有帮助的策略是将代码模块化为函数。例如,您可以有一个 check_name 函数,如果用户已注册,则返回 True:

def check_user(user, user_list):
    for item in list:
        if user == item:
            return True
            break
        return False

还有一些更短的方法可以做到这一点,例如:Python:检查值是否在列表中,无论 CaSE

当你最终在网上为你的项目提供服务时,看看像 Django 或 Flask 这样的框架,它们极大地简化了登录、管理用户等事情。祝你好运。

于 2012-04-24T19:49:34.757 回答