第一周作业
作业要求:
1.创建一个登陆系统,用户一进去输入用户名密码必须和数据库中相一致才能登入,否则报错。
2.输错3次密码,将用户名加入黑名单
3.黑名单的用户即使下次登入也会弹出窗口不让登陆。
注意事项:这次作业要用到字典、文件的知识已经超纲。需要先行自学。
先期工作
1.在pycharm中存放源码的一级文件夹下创建一个txt文本,名为userandpassword.txt,后输入如下图所示内容。
2.创建一个一个空白txt文本名为blacklist.txt
具体源码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 author : negu 2 # -*- coding: utf-8 -*- 3 #创建存放账户和密码的数据库 4 user_dict = {} #创建一个字典,准备好当作账户密码的临时存放点 5 try:#超纲语句 6 with open('userandpassword.txt',"r") as dict_file: #读取数据库后关闭文件(不用打dict_file.close) 7 for line in dict_file:#循环语句将数据库里的数据提出 8 (username,password) = line.strip().split(":")#strip去tab,split将账户和密码以":"为分隔符切分 9 user_dict[username] = password #将数据存入字典中,username当key,password当value 10 except IOError: 11 print("{file} not exit".format(file = filename)) #IOError代表没创建记事本 12 namelist = [] #创建一个列表存放黑名单 13 try: 14 with open('blacklist.txt',"r") as list_file: #读取数据库后关闭文件 15 for blackname in list_file:#利用循环将黑名单数据库里的数据转移到列表黑名单 16 namelist.append(blackname.strip(' '))#strip去头尾空格 17 except IOError: 18 print("{file} not exit".format(file = filename)) 19 while True :#第一层大循环,用作登陆成功后退出用。 20 count = 0 21 name = input("please input your username: ") 22 if name in namelist:#判断是否在黑名单中 23 print("{0} is blocked".format(name)) 24 userconfirm = input("do you want to change username? Y/N")#询问是否继续输入别的用户名 25 if userconfirm == "y": 26 continue 27 else: 28 break 29 if name in user_dict.keys():#判断用户名是否在字典数据库中中 30 while count <=3 : 31 _password = input("please input your password:") 32 if _password == user_dict[name]:#在字典中索引密码 33 print("hello {name}".format(name=name)) 34 exit() 35 else: 36 print("wrong password") 37 count +=1 38 userconfirm = input("do you want to change username? Y/N")#询问是否继续输入别的用户名 39 if userconfirm == "y": 40 continue 41 else: 42 break 43 namelist.append(name)#超过三次、加入黑名单 44 with open("black.list","a") as add_list: 45 add_list.write(" "+name)#将黑名单移入数据库 46 else:print("username not exit")