python初学之用户登录的实现过程(实例讲解)


Posted in Python onDecember 23, 2017

要求编写登录接口:

1. 输入用户名和密码

2.认证成功后显示欢迎信息

3.用户名输错,提示用户不存在,重新输入(5次错误,提示尝试次数过多,退出程序)

4.用户名正确,密码错误,提示密码错误,重新输入.(密码错误3次,锁定用户名并提示,退出程序)

readme

应用知识点:

一、文件的操作

基本操作

f = open('lyrics','r',) #打开文件
first_line = f.readline()
print('first line:',first_line) #读一行
data = f.read()# 读取剩下的所有内容,文件大时不要用
print(data) #打印文件
f.close() #关闭文件

打开文件的模式有:

r,只读模式(默认)。

w,只写模式。【不可读;不存在则创建;存在则删除内容;】

a,追加模式。【可读;不存在则创建;存在则只追加内容;】

with语句,同时打开多个文件,还可以避免打开文件后忘记关闭,语法:

with open('file1', 'r', encoding='utf-8') as f , \
open('file2', 'w', encoding='utf-8') as f_2 :
...

本例中有2个文件,一个存用户名和密码,另一个存黑名单.在读取文件后怎样转变成python对象,然后对对象进行操作,是我遇到的第一个难点!

然后查了下资料,发现字符串split方法,可以把字符串,从逗号分隔符的地方断开,得到一个子字符串列表.这样一来,就可以对黑名单进行查找等操作了.

...
user_lis_bak = f.readline().split(',')
...

Python 字典 setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值。

dict.setdefault(key, default=None)

二、列表和字典

列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

names = ['xiaoli',"xiaoming",'yuanlu']

通过下标访问列表中的元素,下标从0开始计数

>>> names[0]
'xiaoli'
>>> names[1]
'xiaoming'
>>> names[-1]
'yuanlu'
>>> names[-2] #还可以倒着取
'xiaoming'

字典是一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

info = {
   'xiaoli': "123456",
   'xiaoming': "111111",
   'yuanlu': "888888",
 }

这里key是用户名,value是密码,一一对应,key是唯一的.

三、for loop 和 if...else

for i in range(10): print(i)

还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出

for i in range(10):
   if i>5:
     continue #不往下走了,直接进入下一次loop
   print(i)

用户名和密码文件格式:

xiaoli 123456

xiaoming 888888

wangpeng 111111

luyuan 112222

qiling 556666

haiming 223333

黑名单文件格式:

xiaoli,xiaoming,wangpeng,

代码

with open('user_lis', 'r', encoding='utf-8') as f_user_lis,\
     open('user_lis_bak', 'r', encoding='utf-8') as f_user_lis_bak: # 打开文件'user_lis'和'user_lis_bak'
  user_lis_bak = f_user_lis_bak.read().split(',')   # 读取f_user_lis_bak并转成列表赋值给 user_lis_bak
  user_lis_dict = {}                 # 定义一个空字典
  for i in f_user_lis:
    user_lis_dict.setdefault(i.split()[0], i.split()[1])  # 读取f_user_lis并把值放入字典user_lis_dict中
count = 0
for i in range(5):                 # 设置错误次数上限为5次
  name = input('请输入用户名>>')
  password = input('请输入密码>>')
  if name in user_lis_bak:            # 第一步先查找黑名单
    print('用户名已被锁定,请联系管理员!!!')
    continue                  # 在黑名单中直接进入下一次循环,重新输入用户名和密码
  elif name in user_lis_dict:           # 第二步查找用户白名单
    if password == user_lis_dict.get(name):   # 密码正确,验证通过 退出
      print('亲爱的会员', name, '欢迎回来')
      break
    else:                   # 密码错误,提示错误
      if count == 2:
        name_bak_write = open('user_lis_bak', 'a', encoding='utf-8')
        name_bak_write.write(name+',')
        name_bak_write.close()       # 3次密码错误,就把用户名写进黑名单
        print('用户名已锁定,请联系管理员!!!')
        break
      print('密码错误!!!')
      count += 1               # 密码错一次,count就+1
  else:
    if i == 4:                 # 用户名错5次,直接退出
      print('尝试次数过多,再见!!!')
      continue
    print('用户名不存在!!!')          # 用户名错误,提示错误

以上这篇python初学之用户登录的实现过程(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python获取文件版本信息、公司名和产品名的方法
Oct 05 Python
python基于windows平台锁定键盘输入的方法
Mar 05 Python
初步探究Python程序的执行原理
Apr 11 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
在python中使用正则表达式查找可嵌套字符串组
Oct 24 Python
python判断数字是否是超级素数幂
Sep 27 Python
对python pandas 画移动平均线的方法详解
Nov 28 Python
详解python中__name__的意义以及作用
Aug 07 Python
在PyTorch中Tensor的查找和筛选例子
Aug 18 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
2021年的Python 时间轴和即将推出的功能详解
Jul 27 Python
python使用建议与技巧分享(二)
Aug 17 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 #Python
windows 下python+numpy安装实用教程
Dec 23 #Python
Python实现字典的遍历与排序功能示例
Dec 23 #Python
Python实现字典按照value进行排序的方法分析
Dec 23 #Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 #Python
简单了解什么是神经网络
Dec 23 #Python
python用户管理系统的实例讲解
Dec 23 #Python
You might like
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
php网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
2015/12/28 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
2019/06/06 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
js实现鼠标经过时图片滚动停止的方法
2015/02/16 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
Javascript下拉刷新的简单实现
2017/02/14 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
Python持续监听文件变化代码实例
2020/07/22 Python
Python实现异步IO的示例
2020/11/05 Python
python 下载文件的多种方法汇总
2020/11/17 Python
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
办公室驾驶员岗位职责
2013/11/15 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
销售目标责任书
2014/07/23 职场文书
2014年安全保卫工作总结
2014/11/13 职场文书
检讨书范文2000字
2015/01/28 职场文书