# 需求:
# 模拟验证用户输入密码登录。要求有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()