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聚类算法之凝聚层次聚类实例分析
Nov 20 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
Python实现的摇骰子猜大小功能小游戏示例
Dec 18 Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 Python
Django实现分页功能
Jul 02 Python
Django实现支付宝付款和微信支付的示例代码
Jul 25 Python
详解Python发送email的三种方式
Oct 18 Python
python中dir()与__dict__属性的区别浅析
Dec 10 Python
python利用ffmpeg进行录制屏幕的方法
Jan 10 Python
python for循环remove同一个list过程解析
Aug 14 Python
Python趣味入门教程之循环语句while
Aug 26 Python
写一个Python脚本自动爬取Bilibili小视频
Apr 24 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 什么是PEAR?
2009/03/19 PHP
PHP Socket 编程
2010/04/09 PHP
国外PHP程序员的13个好习惯小结
2012/02/20 PHP
PHP实现文件上传功能实例代码
2017/05/18 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
document.documentElement的一些使用技巧
2013/04/18 Javascript
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
Javascript字符串对象的常用方法简明版
2014/06/26 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
微信小程序webSocket的使用方法
2020/02/20 Javascript
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
Python中的自定义函数学习笔记
2014/09/23 Python
python清除字符串里非数字字符的方法
2015/07/02 Python
在Python的Django框架中编写错误提示页面
2015/07/22 Python
python3设计模式之简单工厂模式
2017/10/17 Python
python中requests和https使用简单示例
2018/01/18 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
python使用requests模块实现爬取电影天堂最新电影信息
2019/04/03 Python
django有哪些好处和优点
2020/09/01 Python
英国航空官网:British Airways
2016/09/11 全球购物
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
怎样自定义一个异常类
2016/09/27 面试题
英语专业推荐信
2013/11/16 职场文书
暑假学习心得体会
2014/09/02 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
Nginx如何限制IP访问只允许特定域名访问
2022/07/23 Servers