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中操作列表之List.pop()方法的使用
May 21 Python
Python中字典创建、遍历、添加等实用操作技巧合集
Jun 02 Python
Python中http请求方法库汇总
Jan 06 Python
python登录并爬取淘宝信息代码示例
Dec 09 Python
python实现图像识别功能
Jan 29 Python
Python从数据库读取大量数据批量写入文件的方法
Dec 10 Python
python set内置函数的具体使用
Jul 02 Python
Python命令行click参数用法解析
Dec 19 Python
Python短信轰炸的代码
Mar 25 Python
Python openpyxl模块实现excel读写操作
Jun 30 Python
pyspark对Mysql数据库进行读写的实现
Dec 30 Python
python实现自动清理文件夹旧文件
May 10 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 显示指定路径下的图片
2009/10/29 PHP
PHP的异常处理类Exception的使用及说明
2012/06/13 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
2014/04/09 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
Javascript中的默认参数详解
2014/10/22 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
js中开关变量使用实例
2017/02/24 Javascript
js实现简单的获取验证码按钮效果
2017/03/03 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
ES6中字符串的使用方法扩展
2019/06/04 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
python3.5 tkinter实现页面跳转
2018/01/30 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
python 写一个文件分发小程序
2020/12/05 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
企业精细化管理实施方案
2014/03/23 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
人口与计划生育责任书
2015/05/09 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
利用 JavaScript 构建命令行应用
2021/11/17 Javascript
Go并发4种方法简明讲解
2022/04/06 Golang
React四级菜单的实现
2022/04/08 Javascript