|
实验名称:模拟登陆
实验要求:
- 输入用户名密码
- 认证成功显示欢迎信息
- 输错三次锁定用户
思路:
- 用户输入username
- 判断username是否为真(文件)。
- 否:提示用户不存在;是:判断是否锁定(文件)
- 如果用户锁定提示:该用户已锁定;没锁定就输入密码
- 循环三次(判断密码是否正确)
- 密码超过三次不正确,就写入锁文件
流程图:
代码实现:
#!/usr/bin/env python
#Author:Li QW
#加载sys模块
import sys
#指定文件路径,这里用的是绝对路径
user_word='C:/Users/Administrator/Desktop/open.txt'#用户文件
close_word='C:/Users/Administrator/Desktop/close.txt'#锁用户文件
f=open(user_word,'r')#打开文件
user_info=f.read()# 读取文件
f.close()#读取之后关闭文件
user_lis= user_info.split("#")#以井号作为分隔符
dict = {}#导入字典
for item in user_lis:#赋给变量item
item_list=item.split(':')#以冒号作为分隔符
dict[item_list[0]]=item_list[-1]
count = 0#计数器的作用
username = input("Input username:")#输入用户名
if username in dict:
l=open(close_word,'r')
black_info = l.read()
l.close()
black_list = black_info.split('#')
lock_dict = {}
for items in black_list:
items_list = items.split(':')
lock_dict[items_list[0]]=items_list[-1]#这里注意,用-1 读最后一行,我之前写1 ,掉进坑里爬不起来了。写1,当文件为空时,它会读取不到这个参数就会报错。
if username in lock_dict:#如果在close.txt文件有这个用户,则提示该用户已锁!
print("username close...")
sys.exit()#退出
else:
while count <3:#输入次数小于三次继续循环
password = input("Input password:")#输入密码
if password == dict[username]:#判断密码是否正确
print("Welcome user login !")
sys.exit()
else:
count +=1#错误累加一次 (相当于count = count +1)
if count ==3:#写错三次记录到close.txt文件中
l=open(close_word,'a')
l.write("#%s:%s"%(username,dict[username]))
print("用户输错三次被锁定...")
sys.exit()#退出
else:#提示还有几次机会
print('您还有%s次机会'%(3-count))
else:#用户不存在打印
print("NO usernames...")
附带报错内容:
心得体悟:
写代码容易,排错难!做事要尽可能的考虑周全。走过的坑多了,自然就会熟悉。 |
|
|