用python用户注册和短信验证码逻辑实现案例

发布时间 2023-08-11 14:35:47作者: 小甘要努力了
一.写代码前分析(逻辑分析OK了才可以顺利成章的敲代码):
A、用户发送请求
1、注册账号(用户名不能重复--按照需求进行判断
2、短信验证码(
有效期5分钟)--对短信验证码进行保存 B、用户注册、短信验证用不同得函数封装实现
      d_user={}        #存放用户名和密码的数据字典

verification={} #存放短信验证码--手机号为键,验证码为值
二.涉及的知识点
1.函数调用
 def f2():
     print(123)
 def f3():
     f2()
     print('........')
 f3()

运行截图:

 2.print(random.randint(0,9)) #生成随机数

3.使用filter()过滤器校验用户是否已注册

# 校验用户是否已经注册

    def f(o):

        if o==user:  # 重复

            return o # 返回相同的对象
    
if list(filter(f,d_user)): # 重复 print('用户名已注册!!!')

三.代码板块

1.初版

d_user={}  # 用户信息数据库

verification={}  # 存放短信验证信息  手机号为键  验证码为值

def register(user,password,mobile):

    # 校验用户是否已经注册

    def f(o):

        if o==user:  # 重复

            return o # 返回相同的对象


    if list(filter(f,d_user)): # 重复

        print('用户名已注册!!!')

    else:
        # 可以注册,先生成6位长度的短信验证码

        sms_num=[]

        for i in range(6):  # 循环6次

            sms_num.append(str(random.randint(0,9)))

        print(sms_num)

        s=''.join(sms_num) # 字符串拼接


        # 添加---保存验证码信息  (手机号为键,短信验证码为值)
         verification[mobile]=s


        print('验证码为:%s'%s)  # 告诉用户短信验证码

        sms_code=input('请输入短信验证码:')
        #
       判断所输入的验证码是否真
        
        if verification[mobile]==sms_code:
        
            # 注册成功    保存用户名、密码
        
             d_user[user]=password
        
             print('注册成功!!!')
        
        else:
             print('短信验证码输入错误重新输入!!!')
        
            # 若输入错误我们需要改短信验证码,程序又要回到再次验证,所以写一个验证码方法直接调用即可
while True:

    user=input('请输入用户名:')
    password=input('请输入密码:')
    mobile=input('请输入手机号:')

    register(user, password, mobile)

运行截图:

 2.终版,增加验证码方法

 

d_user={}  # 用户信息数据库

verification={}  # 存放短信验证信息  手机号为键  验证码为值


def short_ver(user,password,mobile):


    sms_code=input('请输入短信验证码')

    # 判断所输入的验证码是否真

    if verification[mobile]==sms_code:

        # 注册成功  --保存用户名、密码

        d_user[user]=password

        print('注册成功!!!')

    else:
        print('短信验证码输入错误重新输入!!!')

        # 我们直接改短信验证码
        short_ver(user,password,mobile)  # 再次调用


def register(user,password,mobile):

    # 校验用户是否已经注册

    def f(o):

        if o==user:  # 重复

            return o # 返回相同的对象


    if list(filter(f,d_user)): # 重复

        print('用户名已注册!!!')

    else:
        # 可以注册,先生成6位长度的短信验证码

        sms_num=[]

        for i in range(6):  # 循环6次

            sms_num.append(str(random.randint(0,9)))

        print(sms_num)

        s=''.join(sms_num) # 字符串拼接


        # 添加---保存验证码信息
        verification[mobile]=s


        print('验证码为:%s'%s)  # 告诉用户短信验证码


        short_ver(user,password,mobile)
while True: user=input('请输入用户名:') password=input('请输入密码:') mobile=input('请输入手机号:') register(user, password, mobile)