zoukankan      html  css  js  c++  java
  • 1_python小程序之实现用户的注册登陆验证功能

    python小程序之实现用户的注册登陆验证功能

     

    程序扼要简述: 

    一、程序流程:
    1.程序开始
    2.判断本地文件/数据库是否已存在用户信息,存在则跳转到登陆,否则跳转到注册,注册成功后后跳转到登陆
    3.判断登陆是否成功,成功则返回成功信息,否则重复尝试登陆3次,最后登录不成功则锁定15秒
    4.程序结束

    二、程序使用的知识点:
    1.本地文件的存储读取
    2.对字典的操作
    3.if条件判断
    4.for/while循环

    三、流程思路图:

     

    四、代码详细:

    #!/usr/bin/env python
    # _*_ coding: utf-8 _*_
    # author='chenjianwen'
    ##实现用户的注册登陆验证功能
    
    import getpass
    import os,sys,time
    
    ##红色
    def print_red(messages):
        print('33[1;35m %s 33[0m' %messages)
    ##绿色
    def print_green(messages):
        print('33[1;32m %s 33[0m' %messages)
    
    
    ##定义空字典
    userinfo = []
    un = []
    pas = []
    ##判断存储用户信息文件是否存在,不存在则创建
    if not os.path.exists('./userinfo.txt'):
        f = open("./userinfo.txt",mode="w",encoding="UTF-8")
        f.close()
    
    ##读取存储用户信息文件,并把用户信息写入字典
    save_userinfo_file = open('./userinfo.txt','r')
    for line in save_userinfo_file.readlines():
        line =line.strip()
        if not len(line) or line.startswith('#'):
            continue
        #print(line)
        username = line.split(' ')[0]
        password = line.split(' ')[1]
        phone_number = line.split(' ')[2]
        #print('==========================')
        #print(username,password,phone_number)
        #userinfo.append({'username':'%s' %username,'password':'%s' %password,'phon_number':'%s' %phone_number})
        un.append(username)
        pas.append(password)
    #print(userinfo)
    
    count = 0
    while True:
        if count < 3:
            count +=1
            select_info = input("你是否有注册过账号了? Please select Y/N:")
            ##用户注册信息
            if select_info == 'N' or select_info == 'n':
                print("开始注册用户信息:")
                username = input("Please enter your username:")
                password = getpass.getpass("Please enter your password:")
                phone_number = input("Please enter your phon_number:")
                #userinfo.append({'username':'%s' %username,'password':'%s' %password,'phon_number':'%s' %phone_number})
                un.append(username)
                pas.append(password)
                #print(userinfo)
                with open('./userinfo.txt','a') as fw:
                    fw.writelines('
    %s %s %s' %(username,password,phone_number))
                #print(userinfo)
            ##用户登陆验证信息
            elif select_info == 'Y' or select_info == 'y':
                #print(userinfo)
                print("开始登录验证信息:")
                username = input("Please enter your username:")
                password = getpass.getpass("Please enter your password:")
    
                if username in un and password in pas:       ##【优化1次】用户与密码验证方法有待优化,目前能够用户密码错位登录,只要列表中分别有输入的对应的字段就可以登录
                    print_green("welcom login {_username}".format(_username=username))
                    break
                else:
                    print_red('Check fail...Check again...')
                    print_red("您还有%s次登录机会" % (3 - count))
                    continue
            else:
                print_red("您输入的内容错误! Please enter again...")
                continue
        else:
            print_red("重复登陆多次失败,请15分钟后再尝试登陆...")
            time.sleep(15)
            count = 0
            continue

    五、执行结果

  • 相关阅读:
    Winfrom判断用户输入是否为int整型方法之一!
    C#winfrom 中的MessageBox 弹出提示框
    C# WinForm窗口关闭的几种常用方法
    excel数据生成sql语句
    Redis 发布和订阅
    C# Redis消息队列例子2
    C# Redis消息队列例子
    win10屏幕亮度无法调节,已解决
    VUE 日期组件(包括年选择)
    暴力递归-逆序栈
  • 原文地址:https://www.cnblogs.com/chenjw-note/p/7674030.html
Copyright © 2011-2022 走看看