用python编写简易登录接口

需求:

  • 让用户输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后退出程序
  • 可以支持多个用户登录
  • 用户3次认证失败后,退出程序,再次启动程序尝试登陆时,还是锁定状态

下面是我写的代码,如果有BUG或者不足之处,还请指出。

"""
需要先在本地创建一个名为locked_user.txt的文件,才能执行下面的代码。
"""
import os

current_path = os.getcwd()  # 获取当面目录
db_username = ['alex', 'wusir', 'oldboy', 'edward']  # 用户名数据库,用户名不能是一样的
db_password = [123, 321, 456, 123123, 123]  # 密码可以是一样的

locked_file = open(current_path + '/locked_user.txt')  # 打开文件
locked_info = locked_file.readlines()  # 获取被锁定用户的信息。readlines一次读取所有文件,并返回list.因为我们不止锁定一个用户,所以用这个方法
locked_file.close()

count = 3
while count > 0:
    count -= 1
    username = input('username:').lower()
    if (username + '
') in locked_info:  # 判断用户是否被锁定,加
是因为下面用了追加模式,每追加一个用户名就重起一行
        print('用户名已被锁定')
        break
    password = int(input('password:'))
    if username in db_username and password in db_password:  # 用户名和密码都在数据库里才能验证通过
        print('welcome')
        break
    else:
        if username in db_username:
            if count == 0:
                locked_file = open(current_path + '/locked_user.txt', 'a')  # 在locked_user.txt里用追加模式储存这个用户名,每追加一个重起一行
                locked_file.write(username + '
')
                locked_file.close()
                print('登录三次失败,用户名被锁定')
            else:
                print('用户名或错误,你还有{}次机会'.format(count))
        else:
            if count == 0:
                print('用户名不存在,登陆失败')
            else:
                print('用户名不存在,你还有{}次机会'.format(count))

"""
这个登陆系统有两个缺陷:
1.需要先创建一个名为locked_user.txt的文件才行,否则会报错,目前还不会用代码让python去自动创建名为locked_user.txt的文件
2.其实只有在第三次输入用户名、并且用户名在数据库的时候才会被锁定。不知道一般的网站登录系统是不是这样,是不是系统会判断3次输入一样的用户名才会给锁定。
"""

原文地址:https://www.cnblogs.com/lshedward/p/9904325.html