Python3简单登录接口编写及遇到的问题分享
1.程序目标
输入用户名密码
认证成功后显示欢迎信息
输错三次后锁定
2.思路
利用python中的pickle模块,实现用户登录信息(采用dict)和被锁定用户信息(采用list)的存储。所以我预先存储了一些用户信息和被锁定用户信息在两个.pkl文件里面。
输入用户名后先判断是否在锁定用户的list里面,如果在直接print账户被锁定。若不在,则判断账户密码是否有效。
3.程序实现
1 import pickle #导入pickle模块 2 pickle_file=open('userandcodes.pkl','rb') 3 userdict=pickle.load(pickle_file) #打开存储用户密码和账户的文件,并把里面的字典类型给userdict 4 pickle_file.close() 5 6 pickle_file1=open('userlock.pkl','rb') 7 locklist=pickle.load(pickle_file1) #打开被锁定用户的文件,并把里面的列表类型给locklist 8 9 count=0 10 while count<3: 11 username = input('username:') 12 while username not in userdict.keys(): 13 print('Wrong Username,input again!') #检测用户名是否存在,直至用户输入正确的用户名(输错用户名不被计数) 14 username = input('username:') 15 password = input('password:') 16 if username not in locklist: 17 if password==userdict.get(username): 18 print('Welcome!.The user {0} loging...'.format(username)) 19 break 20 else: 21 print('Wrong password....Input again') 22 count+=1 23 else: 24 print('You have tried 3 times before,your username has been locked') 25 break 26 else: 27 print('You have tried 3 times,your username is being locked') 28 locklist.append(username) 29 pickle_file1 = open('userlock.pkl', 'wb') 30 pickle.dump(locklist,pickle_file1) 31 32 pickle_file1.close()
4.遇到几个问题
A.pickle.load()老是报'' EOFError: Ran out of input ''(6,7行),最后发现是我pickle_file1文件是空文件导致的,所以我添加了几个元素到文件里面的locklist后问题解决。
B.字典dict访问values时,如果key是一个变量可以通过内置函数get()访问.
5.待改进的地方
a.仅限于同一账户密码输错三次锁定。在用户名正确的情况下,若三次输入的用户名不同,则也会被计入次数。
b.可以增加注册系统,丰富登录界面等。