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编写简单的画图板程序的示例教程
Dec 08 Python
Python中用字符串调用函数或方法示例代码
Aug 04 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
python用for循环求和的方法总结
Jul 08 Python
Python集成开发工具Pycharm的安装和使用详解
Mar 18 Python
python 画图 图例自由定义方式
Apr 17 Python
详解python logging日志传输
Jul 01 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 Python
python爬虫如何解决图片验证码
Feb 14 Python
Python异常类型以及处理方法汇总
Jun 05 Python
Python中np.random.randint()参数详解及用法实例
Sep 23 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
PHP 提取图片img标记中的任意属性的简单实例
2013/12/10 PHP
php实现购物车功能(上)
2020/07/23 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
JavaScript 序列化对象实现代码
2009/12/18 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
JS代码放在head和body中的区别分析
2011/12/01 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
javascript运行机制之this详细介绍
2014/02/07 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
JS实现拼图游戏
2021/01/29 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
Python入门篇之函数
2014/10/20 Python
Python判断操作系统类型代码分享
2014/11/22 Python
Python递归遍历列表及输出的实现方法
2015/05/19 Python
Python连接DB2数据库
2016/08/27 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
wxPython实现绘图小例子
2019/11/19 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
乳制品整治工作方案
2014/05/29 职场文书
意外死亡赔偿协议书
2014/10/14 职场文书
小学生思想品德评语
2014/12/31 职场文书
停发工资证明范本
2015/06/12 职场文书
红色故事汇观后感
2015/06/18 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书