# 需求:
# 模拟验证用户输入密码登录。要求有3次机会,如果用户只输错密码,则三次后锁定,下次再登陆则提示账号锁定.
# 如果用户名密码正确,则提示登陆成功.
目前需要完善的地方,特定用户的记数问题,如果输入两次liuxiaomao,再次输入liuxiaolu则会被锁定。
bb30lees-MacBook-Pro:01.basic bb30$ cat user_list.txt liuxiaolu 123456 liuxiaogou 888888 liuxiaomao 654321
1 #!/usr/bin/env python3 2 3 # -*- coding:uft8 -*- 4 # Author: Lei Lei 5 6 # 需求: 7 # 模拟验证用户输入密码登录。要求有3次机会,如果用户只输错密码,则三次后锁定,下次再登陆则提示账号锁定. 8 # 如果用户名密码正确,则提示登陆成功. 9 10 # 定义变量 11 tries = 0 #尝试次数 12 tries_user = 0 #锁定现有用户的记数 13 account_flag = 0 #锁定标记,1为锁定,0为未锁定 14 15 while tries < 3 and account_flag == 0: 16 user_list = open('/Users/bb30/Documents/IT/pys/01.basic/user_list.txt', 'r', encoding="utf-8") 17 user_lock = open('/Users/bb30/Documents/IT/pys/01.basic/user_lock.txt', 'r+', encoding="utf-8") 18 user_name = input("Please Enter Your Name:") 19 user_pass = input("Please Enter Your Password:") 20 #判断是否被锁定. 21 for _user_lock in user_lock: 22 _user_block = _user_lock.strip() 23 if user_name == _user_block: 24 print("this account has been locked!") 25 account_flag = 1 26 break #只要匹配到锁定账号,就退出判断的循环. 27 28 #如果账号没锁定. 29 if account_flag == 0: 30 for _user_name in user_list: 31 _user = _user_name.strip().split() #把每行变成一个列表 32 #输入用户名和密码相同,显示登陆成功. 33 if user_name == _user[0] and user_pass == _user[1]: 34 print("Welcome to login...,", user_name) 35 account_flag = 1 36 break 37 elif user_name == _user[0] and user_pass != _user[1]: 38 print("wrong username or password!") 39 tries_user = tries_user + 1 40 tries = tries + 1 41 print("u have", 3 - tries, "chances left!\n") 42 if tries_user == 3: 43 user_lock.write("%s\n" %user_name) 44 print("lots of atempts, ur account has been locked.") 45 break 46 else: 47 print("wrong username or password!") 48 tries = tries + 1 49 print("u have", 3 - tries, "chances left!\n") 50 51 user_list.close() 52 user_lock.close()