python初学之用户登录的实现过程(实例讲解)
要求编写登录接口:
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标准库07 信号 (signal包,部分os包)
- 当css属性width设为100%时
- GridView实战一:自定义分页、排序、修改、插入、删除
- Windows下程序打包发布时的小技巧
- Linux的“壳”
- 网页优化系列一:合并文件请求(asp.net版)
- Windows下Thumbnail的开发总结
- 剑指OFFER之调整数组顺序使奇数位于偶数前面找(九度OJ1516)
- Linux架构
- 绘图: Python matplotlib简介
- 绘图: matplotlib Basemap简介
- GridView实战二:使用ObjectDataSource数据源控件(自定义缓存机制实现Sort)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法