• 用户登录


    要求:

    •输入用户名密码

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

    •输错三次后锁定

     

     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 = "
    ".join(temp_list)
    58             w_obj = file('db', 'w')
    59             w_obj.write(temp_str)
    60             w_obj.flush()
    61             w_obj.close()

     

     

    作者:曹小贱
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    XAMPP Error: Apache shutdown unexpectedly. 解决思路
    [转]《我眼中的技术高手》——邯郸学步、创作与创新
    svn 提交错误 400 Bad Reqest MKACTIVITY 请求于XX失败 Conflict Unable to connect to a repository at URL
    try catch 怎么写?
    正则词典
    用B表更新A表
    3种PHP连接MYSQL数据库的常用方法
    PHP数据库连接失败--could not find driver 解决办法
    Php.ini 文件位置在哪里,怎么找到 php.ini
    检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)。
  • 原文地址:https://www.cnblogs.com/caoxiaojian/p/4934792.html
Copyright © 2020-2023  润新知