此次登录是在学习了函数后重新写了一下
取消之前使用os模块,使用函数对用户名文件进行操作
将用户名以列表形式反映出来,判断用户名是否输入正确
将用户名和密码以字典的形式对应出来,进行用户名密码相对应判断
用户登录:输入用户名-----检测用户名是否在锁定文件user_lock.txt中
锁定文件有-----提示用户被锁,请联系IT!!!,并退出程序
锁定文件无-----检测user文件中是否有,提示输入是否正确,正确进入,不正确重新输入
用户名输入正确后,提示输入密码:
密码对应正确,进入系统,密码错误提示重新输入,输入三次,三次错误将用户名写入锁定文件user_login.txt中
以下是代码:
1 #!/usr/local/python/bin/python 2 #-*- coding:utf-8 -*- 3 #Author:辰星心语 4 #DATE:2018/2/24 5 6 7 #用户名锁定文件:user_lock.txt 8 #用户密码存储文件:user_lock.txt 9 #使用函数,将三次密码错误的用户名username追加写入到锁定文件中 10 def user_lockfile(username): 11 lock_file = open("user_lock.txt","a") 12 lock_file.write(username+'\n') 13 lock_file.close() 14 15 #将用户密码文件或锁定用户文件中的用户名或密码以列表形式返回 16 #b为用户密码文件user_login.txt的时候,a的值为0或者1,为0取用户名列表,为1时候取密码列表 17 #b为锁定用户文件user_lock.txt的时候,a的值仅为0,取锁定文件中的用户名列表 18 def name_pass(a,b): 19 user_file = open(b,"r") 20 m = user_file.readlines() 21 x = [] 22 for i in m: 23 y = i.strip("\n").split() 24 x.append(y[a]) 25 user_file.close() 26 return x 27 28 #将用户名密码对应返回为字典形式,z为返回的字典信息 29 def name_passwd(): 30 z = dict(zip(name_list,passwd_list)) 31 return z 32 33 name_list = name_pass(0,'user_login.txt') #用户名列表 34 passwd_list = name_pass(1,'user_login.txt') #密码列表 35 z = name_passwd() #用户名密码对应的字典 36 lockname=name_pass(0,'user_lock.txt') #锁定用户名列表 37 38 c = 'mm' 39 count = 0 40 while c =='mm': #while循环加c标签,判断循环结束或运行 41 count +=1 42 username = input("请输入您的用户名:") 43 if username in name_list: #判断用户名是否在用户文件中存在 44 if username in lockname: #判断用户名是否在锁定文件中存在 45 print("您的账户已经被锁定!!!") 46 c = 'ff' 47 break #输入用户名存在于锁定文件中,则退出系统 48 for i in range(3): #使用for循环进行计数,三次密码输入机会 49 password = input("请输入您的密码:") 50 if password == z[username]: #判断输入密码是否和用户密码文件中的秘密相同 51 print("您输入的密码正确!!!\n欢迎进入系统!!!") 52 c = 'ff' 53 break #相同则进入系统,退出循环计数 54 else: 55 print("您输入的密码不正确,请重新输入!!!") 56 if i ==2: #输入密码次数超过三次 57 print("您输入错误的密码次数过多!\n您的账户已经被锁定,请联系IT!!!") 58 user_lockfile(username) 59 c = 'ff' 60 break 61 else: #判断输入用户名不存在于用户密码文件,重新输入 62 print("您输入的用户名不存在,请重新输入!!!") 63 if count == 3: 64 print("您输入的次数过多,现在退出系统!!!") #用户名输入三次机会,都不正确,退出系统 65 c = 'ff' 66 break