Python学习第一天-编写登陆接口

编写登陆接口

  • 输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后锁定

帐号文件user.txt内容如下:

qaz 123
qwe 12345
qweqwr 12321424
......


锁文件user_lock.txt默认为空


一、只针对帐号文件里的用户进行判断并锁定,针对用户和密码各有三次错误重试机会。
流程图:


二、代码如下

 1 # Author: zfh
 2 # -*- coding:utf-8 -*-
 3 import os,getpass,sys
 4 
 5 i = 0
 6 while i < 3:                                                                #开始循环,只要用异常登录不超过三次
 7     name  = input('请输入用户名:')                                            #输入用户名
 8 
 9     lock_file = open('user_lock.txt','r+')                                  #打开锁定用户文件,检查登录用户是否被锁定(r+--读写),文件名前直接加路径
10     lock_list = lock_file.readlines()                                       #逐行读取锁定用户记录文件
11 
12     for lock_line in lock_list:                                             #循环读取的锁定用户记录
13         lock_line = lock_line.strip('\n')                                   #去掉换行符
14         if name == lock_line:                                               #如果输入用户被锁定,直接退出
15             sys.exit('用户%s已锁定' %name)                                    #输出提示用户被锁定
16 
17     user_file = open('user.txt','r')                                        #打开用户文件(r--只读)
18     user_list = user_file.readlines()                                       #逐行读取用户文件
19 
20     for user_line in user_list:                                             #循环读取的用户记录
21         (user,passwd) = user_line.strip('\n').split()                       #分别获取帐号和密码信息
22         if name == user:                                                    #如用户名正常匹配
23             j = 0
24             while j < 3:                                                    #只要用户密码异常不超过3次就不断循环
25                 password = getpass.getpass('请输入密码:')                    #输入隐藏密码,import getpass
26                 if passwd == password:                                      #如果密码正确,提示欢迎登录
27 #                    print('登录成功%s'%name)
28                     sys.exit('用户%s登录成功'%name)                           #输出欢迎用户登录,正常退出
29                 else:
30                     if j != 2:                                              #j!=2时继续循环
31                         print('用户 %s 密码错误,请重新输入,还有 %d 次机会' % (name,2 - j))#提示还剩余0次机会了
32                 j += 1                                                      #密码输入错误后,循环值增加1
33             else:                                                           #密码输入三次错误后,将该用户追加到LOCK文件
34                 lock_file.write(name +'\n')
35                 sys.exit('用户 %s 达到最大登录次数,将被锁定并退出' % name)
36         else:
37             pass                                                            #当用户没匹配时,跳过并继续循环
38     else:
39         if i != 2: #i!=2是循环
40             print('用户 %s 不存在,请重新输入,还有 %d 次机会' % (name,2 - i))   #提示还剩余0次机会了
41         i += 1                                                             #当用户输入错误时,循环值增加1
42 else:
43     sys.exit('用户 %s 不存在,退出' % name)                                   #用户输入三次错误后,异常退出
44 
45 lock_file.close()                                                          #关闭LOCK文件
46 user_file.close()                                                          #关闭帐号文件
View Code

 

posted @ 2018-09-15 20:44  乀崋  阅读(214)  评论(0编辑  收藏  举报