python案例-用户登录

要求:

•输入用户名密码

•认证成功后显示欢迎信息

•输错三次后锁定

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 """
 5 用户登陆功能实例
 6 1、获取db文件中所有的用户信息
 7 2、比较用户信息
 8     如果用户名不存在,则直接退出
 9     如果用户名存在
10         检测密码,如果密码存在,则提示登陆成功,并将登陆错误次数重置为 0 ,修改内存中的字典中记录的登陆错误次数。(并写入文件)
11         如果密码不存在
12             修改内存中的字典中记录的登陆错误次数
13 
14         将最新的登陆错误次数和对应用户信息写入文件
15 
16 """
17 
18 
19 # 读取用户信息到 user_info_list 中
20 read = file('db','r')
21 user_info_list = read.readlines()
22 read.close()
23 
24 # 处理 user_info_list,以便之后的用户名和密码比较
25 # 处理后的结果: user_info_dict = {'alex': {'pwd': '112233', 'times': 0}, 'eric': {'pwd': '111111', 'times': 0}}
26 user_info_dict = {}
27 for item in user_info_list:
28     user_info = item.split('|')
29     user_info_dict[user_info[0]] = {'pwd': user_info[1], 'times': int(user_info[2].strip())}
30 
31 while True:
32     username = raw_input('请输入用户名:')
33     # 用户名不存在
34     if username not in user_info_dict.keys():
35         print '用户名不存在,请重新输入!'
36     # 用户名存在
37     else:
38         # 判断登陆次数
39         if user_info_dict[username]['times'] > 3:
40             print '账户已经冻结,请联系管理员!'
41             break
42         else:
43             pwd = raw_input('请输入密码:')
44             if user_info_dict[username]['pwd'] == pwd:
45                 # 如果登陆成功,将登陆次数重置为 0
46                 user_info_dict[username]['times'] = 0
47                 print '恭喜您 %s,登陆成功' % username
48             else:
49                 # 如果登陆失败,将登陆次数加一
50                 user_info_dict[username]['times'] += 1
51 
52             # 将最新的登陆次数写入文件
53             temp_list = []
54             for key, value in user_info_dict.items():
55                 temp = "%s|%s|%d" % (key, value['pwd'], value['times'])
56                 temp_list.append(temp)
57             temp_str = "\n".join(temp_list)
58             w_obj = file('db', 'w')
59             w_obj.write(temp_str)
60             w_obj.flush()
61             w_obj.close()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python

linux每日命令(5):mkdir命令

linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。

1182
来自专栏小二的折腾日记

服务器-Nginx模块化结构

习惯上将Nginx分为:核心模块、标准模块、可选HTTP模块、邮件服务模块和第三方模块五大类。

802
来自专栏桥路_大数据

nginx的安装和打点服务器配置

48011
来自专栏Golang语言社区

Go 开发的 IM 和推送服务 goim

goim 是一个支持集群的im及实时推送服务(支持websocket,http和tcp协议) 特性: 轻量级 高性能 纯Golang实现 支持单个、多个以及广播...

1K2
来自专栏web编程技术分享

【php增删改查实例】第二十一节 - 用户修改功能19.1 添加用户修改的按钮

2054
来自专栏用户画像

MAC配置环境变量

 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!

793
来自专栏小狼的世界

使用phpize给PHP动态添加扩展

2、执行phpize。/home/fltrpsrv2/srv2/bin/phpize

1672
来自专栏挖坑填坑

Angular4记账webApp练手项目之一(利用angular-cli构建Angular4.X项目)

官方文档 :https://github.com/angular/angular-cli

903
来自专栏十月梦想

PHP连接mysql

昨天介绍了一下mysql的简单操作,今天来说一下mysql如何和php连接在一起!

1963
来自专栏Laoqi's Linux运维专列

nginx负载均衡-根据访问的目录来区分后端的web

3656

扫码关注云+社区

领取腾讯云代金券