此次登录是在学习了函数后重新写了一下
取消之前使用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
View Code