登录模块:

  我们无论上那个网站,经常遇到这样的情况,让我们登录这个网站,流程图如下:

  

思路:

  1.当我们登录网站的时候,我们首先会输入用户名,这个时候,有些网站会提醒我们用户名是否存在,如果我们输入的用户名不存在的话,会出现提示,告诉我们用户名不存在,这个时候,我们就需要重新输入,或者选择注册,当然,我们这里只是让用户重新输入;

  2.用户名存在的话,就需要输入密码,我们知道,输入密码的时候,我们是不验证密码是否正确的,如果直接先验证密码是否正确,也就失去了让用户输入验证码的作用,因此我们总是先不验证密码,而是让用户输入验证码,先验证用户输入的验证码是否正确;

  3.如果验证码不正确,则让用户重新输入验证码;如果验证码正确,那么这个时候就要返回来重新验证密码是否正确;如果密码正确,就登录成功了;否则,如果密码不正确,这个时候,就需要用户重新输入密码,由于这个时候,用户已经输入了用户名,因此不需要再重新输入用户名了,只需要输入密码和验证码即可;即重新输入密码,然后输入验证码;如果密码正确,则登录成功,否则重新输入密码和验证码,验证码是每次输入密码必须输入的;

  要实现上述代码的功能,肯定要使用while循环,由于是逐层检验,因此用户名的输入肯定是一个循环,直到用户输入正确的验证码为止,关键是,如何实现用户名正确,当密码或者验证码输入错误的时候,不需要重新输入用户名,不然会让人鄙视的;这个时候就要考虑,当用户名正确的时候,就要停止这个循环了,不能再执行下一次用户输入密码或验证码的时候循环输入用户名。

  代码的实现如下:

  

def login(name,password):
'''用户登录模块,用户登录时候的各种设置,本次实现功能'''
'''用户登录验证的时候,一般会先判断验证码是否正确,因此要让用户首先验证验证码'''
active = True
while True:
while active:
username = input("请输入你的用户名:")
'''首先验证用户名是否存在'''
users = []
for user_list in userfile.usernames:
users.append(user_list[])
if username in users:
active = False
else:
print("对不起,您输入的用户名不存在,请重新输入:")
pwd = input("请输入你的密码:") while True:
'''加入一个用户输入验证码的模块,让用户输入验证码'''
verification_code = str(random.randint(,)) + chr(random.randint(,)) + str(random.randint(,)) + chr(random.randint(,))
print(verification_code)
test_num = input("请输入验证码:")
if test_num == verification_code.lower() or test_num == verification_code.upper():
'''无论用户输入大小写都可以验证成功'''
'''用户验证成功后,开始进行用户自己的认证,是否注册,或者用户名正确'''
break
else:
print("您输入的验证码有误,请重新输入!")
if [username,int(pwd)] in userfile.usernames:
print("Successful!")
return (username,pwd)
else:
print("对不起,您输入的密码有误,请重新输入:")

  上述代码运行如下:

请输入你的用户名:geng
请输入你的密码:
3D0t
请输入验证码:3d0t
对不起,您输入的密码有误,请重新输入:
请输入你的密码:
8I9z
请输入验证码:
您输入的验证码有误,请重新输入!
2G0j
请输入验证码:
您输入的验证码有误,请重新输入!
7T1a
请输入验证码:7t1a
对不起,您输入的密码有误,请重新输入:
请输入你的密码:
7X4q
请输入验证码:7x4q
对不起,您输入的密码有误,请重新输入:
请输入你的密码:
2O0q
请输入验证码:2o0q
Successful!
('geng', '')

  上述代码的执行结果如上所示,当我们想单独停止一个循环的时候,可以给这段循环设置一个标识符,用来开启或者关闭循环,当满足条件的时候,关闭这个循环,让这个循环在执行其他程序的时候不会开启;

   active = True
  while True:
  while active:
    username = input("请输入你的用户名:")
    '''首先验证用户名是否存在'''
    users = []
    for user_list in userfile.usernames:
      users.append(user_list[0])
  if username in users:
  active = False
  else:
    print("对不起,您输入的用户名不存在,请重新输入:")
    pwd = input("请输入你的密码:")

  上述代码,我们就实现了这样的功能,当我们想停止这个循环的时候,我们就让内层循环的标识符关闭。

最新文章

  1. 个人作业-Week1
  2. thinkphp一句话疑难解决笔记 3
  3. XPath注入跟SQL注入差不多,只不过这里的数据库走的xml格式
  4. Redis常用五大数据类型
  5. CocoaPods的安装和使用
  6. iOS设备的尺寸
  7. Android菜鸟成长记1--环境的搭配和第一个项目的构建
  8. SharePoint 新特性及安装需知
  9. IE9以上 CSS文件因Mime类型不匹配而被忽略 其他浏览器及IE8以下显示正常
  10. 黄聪:Discuz自制模板带jquery时与discuz本身冲突解决办法
  11. python 面向对象、特殊方法与多范式、对象的属性及与其他语言的差异
  12. 九、 合成(Composite)模式 --结构模式(Structural Pattern)
  13. cocos2dx3.2 异步载入和动态载入
  14. protected private public 的区别
  15. JQuery基础 接下来我将把我最近学习jQuery所做的笔记发布,希望对初学者有些许帮助,也方便自己以后复习
  16. Codeforces Round #301 (Div. 2)(A,【模拟】B,【贪心构造】C,【DFS】)
  17. Eclipse远程调试应用程序
  18. Visual Studio 2019 发布活动 - 2019 年 4 月 2 日
  19. python的int方法实现数据类型转换
  20. Pains and Sickness 学习笔记

热门文章

  1. iOSImagesExtractor for mac 快速拿到iOS应用中所有的图片资源
  2. (中级篇 NettyNIO编解码开发)第八章-Google Protobuf 编解码-1
  3. spring-定时器(1)
  4. [asp.net mvc 奇淫巧技] 03 - 枚举特性扩展解决枚举命名问题和支持HtmlHelper
  5. 点评阿里JAVA手册之编程规约(命名风格、常量定义、代码风格、控制语句、注释规约)
  6. php curl_setopt的相关设置查询手册
  7. js与jQuery对象相互转换
  8. java设计模式面试考点
  9. mybatis中$和#java代码演示
  10. Eclipse用法:自动生成get和set方法