用python写多用户登陆
来源:互联网 发布:php exec 1 编辑:程序博客网 时间:2024/06/02 05:15
需求:
1、让用户输入登陆信息,支持多用户登陆;
2、认证成功后显示欢迎信息;
3、三次认证失败后退出程序,再次启动程序尝试登陆时,还是锁定状态。
# --*-- coding:utf-8 --*--
#! usr/bin/env/python
import os.pathuser_msg = {'Yuanyachao':'abc123','Zhaolu':'bca123','Alex':'cba123'} #create a user messagecount = 1 #从1开始,后面用来打印这是第几次机会print('you have 3 opportunities to guess\nif over 3 times wrong your acount will be locked.')while count < 4: if not os.path.isfile('lock_file.txt'): #判断文件是否存在,如果存在就不执行本条件语句 f = open('lock_file.txt','w') #如果文件不存在,则以读的方式创建一个文件 f.write(str(count)) #并写入当前count值 f.close() f = open('lock_file.txt', 'r+') #打开文件 n = f.read() # 读取文件中的值 if n and int(n) == 4: # 如果读取到值并且值为4,执行以下 print('your acount has been locked') #打印已经被锁定了 f.close() #关闭文件 break #退出循环 print('the %s chance:' % n) #如果没被锁定打印这是第几次机会,n值从文件读取,而不是用count值 in_name = input('name:') in_psw = input('password:') if in_name in user_msg and in_psw == user_msg[in_name]: #输入正确 print('welcom',in_name) f.seek(0) #指针重置为0 f.write('1') #文件中的值重置为1 f.close() break else: print('wrong name or password') count += 1 f.seek(0) f.write(str(int(n)+1)) #错一次,文件中的值就加一次,这样即使本次输入错误,退出程序后,下次再错错误次数会累加 f.close() if count == 4: print('your acount is locked')
上面的小程序存在一些问题,那就是并没有检测账户是否存在,而且输错三次(不管输出的是什么)后程序就会锁定,这明显不符合逻辑。
下面写个升级版,附加需求:1、检测账户是否存在;2、用户名输错后提示;3、已有的用户名如果密码输错三次就锁定。
# --*-- encoding:utf-8 --*--#! usr/bin/env python3import os.pathimport pickleuser_msg = {'Yuanyachao':'abc123','Lilu':'bca123','Alex':'cba123'}print('you have 3 opportunities to guess\nif over 3 times wrong your acount will be locked.')while True: if not os.path.isfile('lock_file'): #判断文件是否存在,如果存在就不执行本条件语句 f = open('lock_file','wb') #如果文件不存在,则以写入二进制的方式创建一个文件 lock_msg = {'Yuanyachao': 0, 'Lilu': 0, 'Alex': 0} #初始化一个登陆几次的状态 pickle.dump(lock_msg,f) #将初始化的登陆状态dump到文件中 f.close() f = open('lock_file','rb+') #以读写二进制的方式打开文件 lock_msg = pickle.load(f) # 将登陆几次的状态(不一定是初始的)load出来 # print(lock_msg) in_name = input('name:') if in_name not in lock_msg: #判断用户输入的用户名是否存在,如果不存在执行以下 print('No such account! Try again!') f.close() #如果不存在不用管正确账户总共登陆了几次,直接关闭文件 continue #如果不存在则重新输入,在这里输入次数没有给出限制,即错误的账户名可以重复试 if lock_msg[in_name] == 3: #判断用户总共登陆错误几次,超过三次执行以下 print('your account has been locked,please contact the administrator!') f.close() break #如果错误三次的账户又输入了相同的账户,则退出程序,如果输入了别的账户不会退出 in_psw = input('password:') if in_psw == user_msg[in_name]: #即账户名和密码都正确执行以下 print('Welcome',in_name) lock_msg[in_name] = 0 f.seek(0) pickle.dump(lock_msg,f) f.close() break else: #账户名正确但密码不正确执行以下 print('Wrong password!') lock_msg[in_name] += 1 #将登陆状态更新,即当前输错的账户登陆次数+1 print('%s error' % lock_msg[in_name]) f.seek(0) pickle.dump(lock_msg,f) #将新的登陆状态dump入文件,进行下次循环 f.close()
阅读全文
0 0
- 用python写多用户登陆
- 用python写登陆界面
- XP多用户登陆
- VNC多用户登陆
- windows 7 多用户登陆
- Jmeter 多用户同时登陆
- Vncservice多用户登陆
- LoalRunner: 多用户同时登陆的测试用例
- .net中控制多用户登陆
- windonws XP多用户登陆问题
- Windows远程桌面实现多用户登陆
- Xp多用户如何同时登陆
- windows 2003 服务器多用户登陆
- 设置windows系统多用户登陆
- Windows远程桌面实现多用户登陆
- win7实现多用户同时登陆
- oracle多用户登陆+oracle实例
- Python写的聊天室,使用telnet登陆
- (转)implicitly_wait()隐式等待和explicit_wait()显示等待
- Class.forName()用法详解
- 顶级会议 | 腾讯AI Lab解析2017 NIPS三大研究方向,启动教授及学生合作项目
- 46. Permutations
- 判断附件类型添加切换对应图片
- 用python写多用户登陆
- 6、数据类型转换
- ionic ActionSheet(上拉菜单)
- 使用yum安装LAMP环境 php+mysql+mysql
- cxf和xfire的jar包冲突问题,xfire-core-*与XmlSchema-*的冲突
- 细看spring security单点登陆源码的验证过程
- Maven生命周期详解
- 策略设计模式
- c# 类和属性