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使用PyV8执行javascript代码示例分享
Dec 04 Python
Python时间获取及转换知识汇总
Jan 11 Python
python实现机械分词之逆向最大匹配算法代码示例
Dec 13 Python
Python实现的计算器功能示例
Apr 26 Python
python感知机实现代码
Jan 18 Python
Python实现图片转字符画的代码实例
Feb 22 Python
Python常用特殊方法实例总结
Mar 22 Python
python3用PIL把图片转换为RGB图片的实例
Jul 04 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
Jul 01 Python
利用python进行文件操作
Dec 04 Python
使用Pytorch实现two-head(多输出)模型的操作
May 28 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
短波收音机简介
2021/03/01 无线电
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
js函数调用常用方法详解
2012/12/03 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
js对象的复制继承实例
2015/01/10 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
JS获取复选框的值,并传递到后台的实现方法
2016/05/30 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
vue.js整合mint-ui里的轮播图实例代码
2017/12/27 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
Python编程中NotImplementedError的使用方法
2018/04/21 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
在Python中过滤Windows文件名中的非法字符方法
2019/06/10 Python
解析python实现Lasso回归
2019/09/11 Python
python 线程的五个状态
2020/09/22 Python
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
电气工程和自动化自荐信范文
2013/12/25 职场文书
人力资源经理自我评价
2014/01/04 职场文书
个人近期表现材料
2014/02/11 职场文书
励志演讲稿200字
2014/08/21 职场文书
上课说话检讨书500字
2014/11/01 职场文书
银行竞聘报告范文
2014/11/06 职场文书
Java tomcat手动配置servlet详解
2021/11/27 Java/Android