zoukankan      html  css  js  c++  java
  • 用户认证的小程序练习

    # -*- coding:utf-8 -*-
    # author:倪周强
    
    import os
    
    users = [['user1', '123'], ['user2', '456'], ['user3', '789']]
    auth_file = os.path.exists('auth_status')
    
    if not auth_file:
        # 如果不存在,那说明是第一次运行程序,就新建一个文件,写上1,表示可以进行验证过程。
        # 写完1,回到首部去读取这个状态值赋给auth_value变量,以便后续判断是否锁定。
        f = open('auth_status', 'w+', encoding='utf-8')
        f.write('1')
        f.seek(0)
        auth_value = f.read()
        f.close()
    else:
        # 如果存在,说明不是第一次运行程序,那就读取文件,把值赋给auth_value变量。
        f = open('auth_status', 'r+', encoding='utf-8')
        auth_value = f.read()
        f.close()
    
    if int(auth_value) == 1:
        # 如果是1,表示可以验证,没有锁定,继续下面的验证过程。
        count = 0
        # 这里的count,我理解为验证失败的次数,而不是验证的次数。
    
        while count < 3:
            # 如果验证失败>=3次,就不会进入循环了。
            user_name = input('请输入用户名:')
            user_password = input('请输入密码:')
    
            for user in users:  # 从列表里取用户信息
                if user_name == user[0] and user_password == user[1]:  # 判断用户名和密码是否同时正确
                    print('恭喜你,验证成功!')  # 打印消息
                    auth_flag = True  # 给一个标志,表示验证成功,用于跳出while的外层循环。
                    break  # 跳出for循环
                else:
                    auth_flag = False  # 给一个标志,表示验证失败,这行必须有,要不然下一个if会因为没有定义而报错。
    
            if auth_flag:  # 某次验证成功了,就跳出while循环。
                break
    
            count += 1  # 否则说明验证失败,失败次数+1
            if count <= 2:  # 前两次失败会提醒,第三次就不提醒了
                print('你已经错误了%s次,还有%s次机会(错误3次,账户将被锁定)!' % (count, 3 - count))
                print('-----------------------------------------------------------------------')
    
    
        else:  # 说明while循环是完整结束的,试了三次都失败了,那么把0保存到文件里,说明账户被锁定。
            f = open('auth_status', 'w+', encoding='utf-8')
            f.write('0')
            f.close()
            print("你已经错误了3次,账户被锁定,再见!")  # 区别前两次有提醒,第三次直接再见
    
    else:  # 如果不是1,说明状态被锁定,就不再验证,直接打印消息。
        print("你已经被锁定,不能登录。")
    wechat: nick753159 qq: 417966852 email: nzq42@qq.com base: shanghai
  • 相关阅读:
    C#中值类型和引用类型
    C#XML
    矩阵操作2
    scala安装
    Linux拷贝U盘文件(命令行)
    通过电脑,模拟点击手机屏幕 /手机自动点击,刷金币?
    python类
    矩阵操作
    数据预处理函数
    train_test_split数据切分
  • 原文地址:https://www.cnblogs.com/cyberbit/p/exe_auth.html
Copyright © 2011-2022 走看看