需求:
- 让用户输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后退出程序
- 可以支持多个用户登录
- 用户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次输入一样的用户名才会给锁定。 """