第一次作业是做用户登录接口:
作业要求:
基础需求: 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 升级需求: 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
第一次全功能实现的代码:
# author:wilbur0402 userdata = { 'zhangsan':'aaa111', 'lisi':'bbb222', 'wangwu':'ccc333' } count = 0 f = open('黑名单','a+',encoding='utf-8')#打开文件 f.seek(0)#重置文件指针位置 data = f.read() while True: #三次循环体 user = input('please input your username:') ban = user#为黑名单格式化保留裕量 if ban not in data: #确认用户输入不在黑名单内 passwd = input('please input your password:') count += 1 if count < 3: if user in userdata and passwd == userdata[user]: #判断用户输入账号密码是否对应 print('welcome %s back!' % user) break else: print('invalid username or password!') else: #尝试三次输入错误后将用户输入账号写入黑名单并跳出循环 print('you inputed invalid username or password 3 times!') if user in userdata and user not in data: f.write('%s\n'%user) break elif user == '': #过滤空字符输入 print('invalid username!') else: #当用户输入在黑名单内时返回封禁信息 print('your account is banned!') break
这里我并没有用需求中所提示的用列表来保存用户信息,而是使用了字典
总结:
在debug时,遇到了空字符被ban的bug,困惑了好久,经过我的深思熟虑,我忘了可以用多分支来解决空字符输入问题。
经过我的测试,可以实现全部功能。
瞎聊几句:
说实话,这个作业我做了不下五次,但是每次都会遇到问题,而且遇到的问题还总是不一样的,让我十分的难受,不过总算在刘伟同学的帮助下,搞定了这些问题。