第一次作业总结

基础需求:
让用户输入用户名密码
认证成功后显示欢迎信息
输错三次后退出程序

升级需求:
可以支持多个用户登录 (提示,通过列表存多个账户信息)
用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)

第一次
l = {'zheng': '123', 'xiao':'123'} # 定义帐号和密码的存储
num = 3 # 控制循环次数初始值


#获取程序是否为锁定状态
def Test():
    f = open('user', 'r', encoding='UTF-8')
    for i in f:
        if int(i) == 1:
            return True
    else:
        return False
func = Test()
while num > 0:

    if func == False:
        print('输入次数错误太多,程序已被锁定,请联系管理员')
        break
    User = input('请输入帐号:')
    pwd = input('请输入密码:')
    if User in l.keys():
        if pwd in l.values():
            print('欢迎登入')
            break
    else:
        num -= 1
        print(f'帐号或者密码错误,还剩下{num}次机会')
        continue
    # 判断次数达到3次时,进行写文件,达到锁定目的
    f = open('user', 'w', encoding='UTF-8')
    f.write('2')
    f.close()
问题点1:
文件操作直接使用open不是很好,需要每次执行玩都要进行close()关闭操作,建议使用with as 方法,
问题点2:
在进行判断时,无法准确的判断该key值是否对应该value值
问题3:
在进行input输入时,应该对该值进行去空格出去,使用strip()去空格


修改后代码


 1 l = {'zheng': '678', 'xiao':'123'}
 2 num = 3
 4 判断是否为锁定状态
 5 def test():
 6     with open('user', 'r', encoding='UTF-8') as f:
 7         for i in f:
 8             if int(i) == 1:
 9                 return True
10         else:
11             return False
12 
13 对文件进行写操作,进行锁定
14 def con():
15     with open('user', 'w', encoding='UTF-8') as f:
16         f.write('2')
17 
18 
19 func = test()
20 while num > 0:
21     if func == False:
22         print('输入次数错误太多,程序已被锁定,请联系管理员')
23         break
24     User = input('请输入帐号:')
25     User = User.strip()
26     pwd = input('请输入密码:')
27     pwd = pwd.strip()
28     if User in l.keys() and pwd in l[User]:
29         print('欢迎登入')
30         break
31     else:
32         num -= 1
33         if num == 0:
34             print('输入错误次数过多,程序已被锁定')
35             con()  #错误3次后,调用修改文件函数进行锁定
36             break
37         print('帐号或者密码错误,还剩下%s次机会' % num)
38         continue