python-------------输入三次锁定用户-----作业

1,首先要先定义两个文件,1个是用户文件,1个是黑名单文件,我是用用户文件里事先定义的用户名和密码来实现输入三次错误的用户名来锁定用户,随后加入黑名单。重新启动程     序,不允许这个黑名单用户登录。

2,这里的用户文件是:“user-”

             黑名单文件: “Blacklist”

3,这里只要用户登录成功,就退出程序,而不是在接着循环。

3.有bug,输入第三次 就锁定第三次输入的用户,而不是一个用户连续输入三次 错误,才锁定这个用户。

4, 代码如下:

 1 def lock():
 2     '''
 3     输入三次错误,锁定,加入黑名单
 4 
 5     '''
 6     conut = 1   #设定一个计数器
 7 
 8     while conut <= 3:   #循环不超过三次
 9         user_name = input("please your input username : ")
10         user_name = user_name.strip()  #去除输入的空格,换行符
11         f = open("Blacklist",encoding="utf-8")
12 
13         for line in f :    #遍历黑名单文件到line变量中
14             if user_name == line.strip():  #判断输入的用户名是否在 黑名单中
15                 print("bye".center(50,"-"))    #如果在里面,打印bye,直接退出程序
16                 print("您的 %s 用户已经在黑名单中 !!" %(user_name))
17                 exit()   # 退出程序
18         user_pwd = input("please your input userpasswold : ")   # 输入密码
19 
20         f1 = open("user-","r",encoding="utf-8")  #  把用户文件 存到 f1 变量中
21         flag = False  # 设置了一个 开关  默认False  如果 对上了  , 就改为 True
22         for line1 in f1:
23             user,passwd = line1.strip().split("-----")   # 用户名,密码 对应 用户文件里的 用户名跟密码
24             if user_name == user and user_pwd == passwd:  #如果 输入的名字和密码 等于 用户文件里的 用户名和密码
25                 print("welcome %s ".center(50,"-") %(user_name))   # 执行 输出 , 之后就退出程序
26                 flag = True    #相等的话,就把循环外的 flag改成True了
27                 exit()
28         f1.close()   #关闭文件
29 
30         if flag == False:   # 如果 flag还为Flase 说明上面 没有输入正确,
31             print("sorry %s is not True username or passwold
" %(user_name))
32             conut += 1   #  循环+1次
33     else:
34         print("bye bye".center(50,"-"))
35         print("你的 %s 用户名已被加入黑名单" % (user_name))
36         f3 = open("Blacklist", 'a',encoding="utf-8")  #再次打开 黑名单文件,以"a"追加的方式
37         f3.write(user_name)  # 将输入三次错误的用户加入
38         f3.write('
')    #换行,使新进来的用户名不跟前面的用户名在一行
39         f3.close()  # 关闭文件
40 
41 lock()

原文地址:https://www.cnblogs.com/gaoyuan111/p/6683021.html