初学 python 之 用户登录实现过程
要求编写登录接口 : 1. 输入用户名和密码
2.认证成功后显示欢迎信息
3.用户名输错,提示用户不存在,重新输入(5次错误,提示尝试次数过多,退出程序)
4.用户名正确,密码错误,提示密码错误,重新输入.(密码错误3次,锁定用户名并提示,退出程序)
readme
应用知识点:
一,文件的操作
基本操作
打开文件的模式有:
- r,只读模式(默认)。
- w,只写模式。【不可读;不存在则创建;存在则删除内容;】
- a,追加模式。【可读;不存在则创建;存在则只追加内容;】
with语句 ,同时打开多个文件,还可以避免打开文件后忘记关闭,语法:
本例中有2个文件,一个存用户名和密码,另一个存黑名单.在读取文件后怎样转变成python对象,然后对对象进行操作,是我遇到的第一个难点!
然后查了下资料,发现字符串split方法,可以把字符串,从逗号分隔符的地方断开,得到一个子字符串列表.这样一来,就可以对黑名单进行查找等操作了.
1 ...
2 user_lis_bak = f.readline().split(',')
3 ...
Python 字典 setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值。
1 dict.setdefault(key, default=None)
二,列表和字典
列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作
1 names = ['xiaoli',"xiaoming",'yuanlu']
通过下标访问列表中的元素,下标从0开始计数
1 >>> names[0]
2 'xiaoli'
3 >>> names[1]
4 'xiaoming'
5 >>> names[-1]
6 'yuanlu'
7 >>> names[-2] #还可以倒着取
8 'xiaoming'
字典是一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。
1 info = {
2 'xiaoli': "123456",
3 'xiaoming': "111111",
4 'yuanlu': "888888",
5 }
这里key是用户名,value是密码,一一对应,key是唯一的.
三,for loop 和 if...else
1 for i in range(10): print(i)
还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出
1 for i in range(10):
2 if i>5:
3 continue #不往下走了,直接进入下一次loop
4 print(i)
用户名和密码文件格式:
xiaoli 123456
xiaoming 888888
wangpeng 111111
luyuan 112222
qiling 556666
haiming 223333
黑名单文件格式:
xiaoli,xiaoming,wangpeng,
bug及优化方向:
1. 在密码错误3次时,写入黑名单的是第三次输入的用户名,三次输入的用户名可能不同,但都是正确的.改进方向,每个正确的用户名有3次输出密码的机会!
代码