简单登录系统的Python优化

简单登录系统的Python优化,python,login-system,Python,Login System,我的代码没有问题,但我对python和编程非常陌生,所以我想了解一些我可以做得更好的信息。 我决定做一个非常简单的登录/注册系统,我希望你有一些意见,这样我可以提高自己。我不经常在这里发帖,也不知道这是不是经常问的问题,但我希望你能帮助我。提前谢谢 代码如下: username = ['mel1', 'mel2', 'mel3'] password = ['tyr1', 'tyr2', 'tyr3'] def log_sys(): logged_in = False

我的代码没有问题,但我对python和编程非常陌生,所以我想了解一些我可以做得更好的信息。 我决定做一个非常简单的登录/注册系统,我希望你有一些意见,这样我可以提高自己。我不经常在这里发帖,也不知道这是不是经常问的问题,但我希望你能帮助我。提前谢谢

代码如下:

username = ['mel1', 'mel2', 'mel3']
password = ['tyr1', 'tyr2', 'tyr3']

def log_sys():
    logged_in = False        
    log_user = raw_input('Please type in your username: ')
    log_pass = raw_input('Please type in your password: ')

    if log_user in username:
        index = username.index(log_user)
        if log_pass == password[index]:
            logged_in = True

    if logged_in:
        print 'You are logged in'
    else: 
       print 'Wrong username or password'
       log_sys()

def reg_sys(user):
    regpass1 = raw_input('Please choose a password: ')
    regpass2 = raw_input('Please retype password: ')

    if regpass1 == regpass2:
        username.append(user)
        password.append(regpass1)
        log_sys()
    else:
        print 'Passwords did not match'
        reg_sys(user)

def reglog_system():
    reglog = raw_input('Do you want to register or login?: ')

    if reglog == 'register':
        regname = raw_input('Please choose a username: ')
        reg_sys(regname)
    elif reglog == 'login':
        log_sys()
    else:
        reglog_system()

reglog_system()

这不是一个完整的答案;我不是python专家

我强烈建议使用关联数组或字典/哈希,而不是列表/数组来存储用户名和密码。至少,大型用户列表的性能会更好

当用户注册到该进程的函数中时,我会移动用户名提示;将用户名传递到reg_sys()中,但在log_sys()中进行提示,这似乎很奇怪

您的密码测试似乎有缺陷;您只检查第一个是否与第二个匹配,而不检查其中一个或两个是否为None、空列表、空字符串或其他特殊值


我希望这会有所帮助。

毕竟受到了一些批评

1) 为了明确你的主要职能是什么,你应该改变:

reglog_system()

2) 使用以下命令调用脚本:

if __name__ == "main":
    main()
使它更便于携带。然后可以直接调用它或将其作为模块导入

3) 使用一些返回函数:

return raw_input("foo")
并在main()中处理返回。它使您的代码看起来更容易,并且可能有助于决定何时/何地处理函数的结果


就性能而言,我真的不能批评其他任何东西,至少我没有想到任何东西。对于未来的规划,可能会实现哈希?SHA256现在看起来相当健壮。

我发现如果使用
example=input()
可以直接使用
example

例如:

name = input("Username: ")
if name == 'Username':
    passwd = input("Password: ")
    if passwd == 'Password':
        print("Login Sucsessful!")
    else:
        print("Incorrect Username or password.")

我觉得不错。你不可能是那么新;大多数Python初学者不使用类似if登录的代码:。我只能建议(在这里吹毛求疵)使用更清晰的函数和变量名。谢谢Benji,我以前一直在使用Javascript,所以我知道一点。很高兴你的意见!为什么不使用一个字典,其中键是用户名,值是密码?这个问题似乎是离题的,因为它属于我,我没有想到克里斯蒂安,但我现在看到,这将是一个更好的选择。谢谢你的支持input@VictorVH你不高兴吗!?为什么?这是一个没有理由的建议,而且理由对我来说并不明显,所以如果请求者对它很明显,我会感到惊讶。@Slartibartfast谢谢:)。为澄清而编辑
name = input("Username: ")
if name == 'Username':
    passwd = input("Password: ")
    if passwd == 'Password':
        print("Login Sucsessful!")
    else:
        print("Incorrect Username or password.")