要求:

•输入用户名密码

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

•输错三次后锁定

 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()

python案例-用户登录的更多相关文章

  1. 【Python】用户登录三次锁定

    这是从另外一个博客考过了的,借鉴一下,怕下次找不到1 # -*- coding:utf-8 -*- 2 3 #登录三次锁定用户 4 5 #用于计数(循环三次的判断) 6 count = 0 7 8 # ...

  2. python 模拟用户登录代码

    需求:输入用户名,判断用户是否被锁定,锁定则退出,否则进入密码验证,输入三次错误密码之后此用户被锁定. userlist.txt里,用":"将用户名.密码.状态码分开: [root ...

  3. 【PYTHON】用户登录三次错误锁定

    黑名单:blacklist.txt 用户名单:username_password.py # Author:Stephen Yuan # 用户名和密码 username_password = { ', ...

  4. Python模拟用户登录

    # coding=utf8 import hashlib db = { 'michael':'e10adc3949ba59abbe56e057f20f883e', 'bob':'878ef96e861 ...

  5. xpath技术解析xml以及案例模拟用户登录效果

    问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!! xpath就在此情况下产生了--主要是用于快速获取所需的[节点对象]. 在dom4j中如何使用xPath技术 1) ...

  6. 因SELinux引起的用户登录问题解决案例

    增强安全性带来的负作用往往是牺牲便利性,就像北京地铁的安检一样,但有些时候我们确实需要它.   案例是,用户有一台安装了KylinOS(国产麒麟,使用的是redhat的内核)的系统,当我们对其系统文件 ...

  7. Java基础知识强化之集合框架笔记37:用户登录注册案例

    1. 登录注册案例分析图解: 2. 用户登录案例 详细分析 和 分包实现: (1)用户登录案例详细分析(面向对象思想) 按照如下的操作,可以让我们更符合面向对象思想: • 有哪些类呢?         ...

  8. python 3.5 用户登录验证和输入三次密码锁定用户

    #!/usr/bin/env python #encoding: utf-8 #登录程序,输入用户和密码输出欢迎信息,输入错误三次锁定用户,不让登录 import sys print (''' 欢迎登 ...

  9. Session小案例------完成用户登录

    Session小案例------完成用户登录     在项目开发中,用户登陆功能再平常只是啦,当用户完毕username和password校验后.进入主界面,须要在主界面中显示用户的信息,此时用ses ...

随机推荐

  1. SharpPcap网络包捕获框架的使用--实例代码在vs2005调试通过

    转自:http://hi.baidu.com/boyxgb/blog/item/89ac86fbdff5f82c4e4aea2e.html 由于项目的需要,要从终端与服务器的通讯数据中获取终端硬件状态 ...

  2. SQL Linq lamda区别

    SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employees select e Employees   .Sele ...

  3. Nginx-->基础-->安装-->001:安装总结

    root@ubuntu:/data/src/nginx# ./configure --help --help print this message --prefix=PATH set installa ...

  4. 【OpenGL】如何绘制Shadow

    背景 Shadow即阴影,它是光线被不透明物体遮挡而产生的黑暗区域,与光源的方向相反. 在Blender中编辑过程中没有Shadow,只有在经过渲染后才能显示.目前有一个基于Blender的项目,要求 ...

  5. [MetaHook] BaseUI hook

    Hook IBaseUI function. #include <metahook.h> #include <IBaseUI.h> IBaseUI *g_pBaseUI = ; ...

  6. Java可读取操作系统的配置

    /** * Java获取操作系统的配置环境 * @throws Exception */ @Test public void testPro() throws Exception { Properti ...

  7. Android 后端 Bmob的使用

    网上发现一个很不错的东西Bmob,推荐给大家使用. Bmob可以开发一个云存储的移动应用软件,给应用软件快速添加一个安全灵活的后台管理系统,方便浏览终端保存的各种信息. 如果觉得创建服务器程序比较麻烦 ...

  8. oracle转Mysql中,varchar2(10)和number应该转换为什么类型?

    一. varchar2(10)和number应该转换为什么类型? oracle转成mysql时:varchar2(10)可以转成varchar(10)number则要看oracle中存储的具体是什么类 ...

  9. 初学require.js

    引入require.js,可以解决的问题: (1)实现js文件的异步加载,避免网页失去响应: (2)管理模板之间的依赖性,便于代码的编写和维护. 它的模块管理遵循AMD规范(Asynchronous ...

  10. [poj 3261]Milk Patterns

    后缀数组搞一下就可以了喵~ 其实这道题的第一个想法是 SAM ,建完后缀自动机后拓扑排序跑一遍统计下每个子串的出现次数就 O(N) 就妥妥过掉了 后缀树也是 O(N) 的,统计一下每个节点对应的子树中 ...