一.写代码前分析(逻辑分析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)

运行截图:

  

 

用python用户注册和短信验证码逻辑实现案例的更多相关文章

  1. python 实现发送短信验证码

    [说明]短信接口使用的是“聚合数据”上面的接口. 那么在使用接口前,需要在聚合数据上面注册,进行申请接口.当然在正式使用之前,我们可以使用申请免得的进行测试. 一.申请成功后,需做的准备工作如下: 1 ...

  2. python点击短信验证码

    代码如下 : import requestsimport time# 手机号码tel=1381380000# 请求地址url="http://192.168.100.101:8080/api ...

  3. python 自动获取手机短信验证码

    需要一个有权限的 APK 在手机实时存储短信到手机内存 /sdcard/smslog.txt 里(外部SD卡也可以知道能通过adb命令访问到): /***** ...... try {long tim ...

  4. day101:MoFang:模型构造器ModelSchema&注册功能之手机号唯一验证/保存用户注册信息/发送短信验证码

    目录 1.模型构造器:ModelSchema 1.SQLAlchemySchema 2.SQLAlchemyAutoSchema 2.注册功能基本实现 1.关于手机号码的唯一性验证 2.保存用户注册信 ...

  5. python实战===短信验证码的小项目

    项目地址 https://www.shiyanlou.com/courses/609/labs/2007/document flask的中文文档 http://docs.jinkan.org/docs ...

  6. python+pymssql+selenium 获取短信验证码登录(实战练习)

    登录页面输入手机号, 获取短信验证码(验证码有10分钟有效期) 1 连接sql server数据库,获取10分钟之内的有效短信验证码 2 页面输入手机号,并获取验证码.若存在有效验证码则输入验证码,若 ...

  7. Android Studio精彩案例(五)《JSMS短信验证码功能实现》

    转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 很多应用刚打开的时候,让我们输入手机号,通过短信验证码来登录该应用.那么,这个场景是怎么实现的呢?其实是很多开放平台提供了短信验证功能 ...

  8. 【安全测试】如何利用短信验证码BUG浪费公司的钱

    一.背景 公司新产品体验,发现不少交互.UI.功能设计上的小问题.于是花了点时间随意挑了几个功能深入的玩了一下,顺手提了BUG.接口层,看了一下接口文档,简单测了一下接口,BUG其实还挺严重的,后面详 ...

  9. Django商城项目笔记No.5用户部分-注册接口-短信验证码

    Django商城项目笔记No.4用户部分-注册接口-短信验证码 短信验证码也保存在redis里(sms_code_15101234567) 在views中新增SMSCodeView类视图,并且写出步骤 ...

  10. day102:MoFang:后端完成对短信验证码的校验&基于celery完成异步短信发送&flask_jwt_extended&用户登录的API接口

    目录 1.用户注册 1.后端完成对短信验证码的校验 2.基于celery实现短信异步发送 2.用户登录 1.jwt登录验证:flask_jwt_extended 2.服务端提供用户登录的API接口 1 ...

随机推荐

  1. 2021-09-07:单词接龙 II。按字典 wordList 完成从单词 beginWord 到单词 endWord 转化,一个表示此过程的 转换序列 是形式上像 beginWord -> s1 -

    2021-09-07:单词接龙 II.按字典 wordList 完成从单词 beginWord 到单词 endWord 转化,一个表示此过程的 转换序列 是形式上像 beginWord -> s ...

  2. 【密码学】为什么不推荐在对称加密中使用CBC工作模式

    引言 这篇文章是我在公司内部分享中一部分内容的详细版本,如标题所言,我会通过文字.代码示例.带你完整的搞懂为什么我们不建议你使用cbc加密模式,用了会导致什么安全问题,即使一定要用需要注意哪些方面的内 ...

  3. 大家都说Java有三种创建线程的方式!并发编程中的惊天骗局!

    在Java中,创建线程是一项非常重要的任务.线程是一种轻量级的子进程,可以并行执行,使得程序的执行效率得到提高.Java提供了多种方式来创建线程,但许多人都认为Java有三种创建线程的方式,它们分别是 ...

  4. Java NIO原理 (Selector、Channel、Buffer、零拷贝、IO多路复用)

    系列文章目录和关于我 零丶背景 最近有很多想学的,像netty的使用.原理源码,但是苦于自己对于操作系统和nio了解不多,有点无从下手,遂学习之. 一丶网络io的过程 上图粗略描述了网络io的过程,了 ...

  5. docker-compose部署django+nginx+minio

    总体文件结构 docker-compose.yml文件 version: "3" # volumes: # 自定义数据卷 networks: # 自定义网络(默认桥接) web_n ...

  6. 前端vue uni-app列表组件 list组件,简单好用

    快速实现uni-app列表组件 list组件,简单好用; 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12675 效果图如下: ...

  7. 数据库中的可视化和探索性:MongoDB的数据可视化和探索性工具

    目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 2.3 相关技术比较 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成 ...

  8. 用R语言实现并行计算:基于R的数据处理和分析工具

    目录 引言 随着数据量的爆炸式增长,数据处理和分析的需求也越来越大.传统的批处理计算已经无法满足高效的数据处理和分析需求,因此,并行计算成为了一个重要的技术方向.然而,R语言作为一种开源.可视化能力强 ...

  9. 6个常见的IB网络不通问题

    摘要:如果遇到IB网络不通,可以试着从高层往底层逐步分析看看. 本文分享自华为云社区<常见IB网络不通问题记录>,作者: tsjsdbd . 如果遇到IB网络不通,可以试着从高层往底层逐步 ...

  10. React后台管理系统11 配置项目初始化展开代码

    在上一文中,我们已经配置好了,刷新默认打开选中的样式,但是如果是在/page3/1,这种的,并没有选中到/page3里面的/page3/1,这个地方来,所以我们需要解决的就是这几个问题: 思路如下: ...