既然是学习,作业必不可少,其实在看后面讲思路之前还是感觉自己写的不错,但是和后面一对比,感觉实在是想的太片面太肤浅了,还需要太多太多改进的地方。
首先放一下作业要求。
最开始做的时候真的是完全按照字面的要求去做,再回来看看总有一种缺少思考的感觉,现在先把第一遍作业的代码放出来,之后会根据视频讲解进行改进,到时候再对比一下吧。
#作业一 #!/usr/bin/env python import os #加载模块 name1 = "n" #正确的用户名 pd1 = "qqqqq" #正确的密码 if os.path.exists("suoding.log"): #判断锁定文件是否存在 print("系统锁定") exit(1) #如果存在则退出 suoding=0 #锁定变量 0为非锁定,1为锁定 cishu = 0 #输入错误的次数 zuidacishu = 3 #错误次数上线 if suoding==0: for i in range(zuidacishu): #错误次数上线的循环 suoding=0 name = input("请输入用户名:") pd = input("请输入密码:") if name == name1 and pd == pd1: #判断账号密码错误 print("认证成功,欢迎进入系统") break else: cishu += 1 #错误次数加一 cishujieguo=zuidacishu-cishu #剩余次数 print("认证失败,您还有%s次机会"%(cishujieguo)) else: print("系统已被锁定") exit(1) if cishu == 3: #判断如果已经错误3次 f=open("suoding.log","w") #创建锁定日志 f.write("1") f.close() print("系统锁定") suoding=1 exit(1)
作业一只是单纯的判断变量的方式判断账号,仔细想想这种方法根本无法用在真实的环境下,真是环境下必然是通过账号文件和屏蔽名单来实现的。这也算是个教训吧,以后做作业的时候尽量考虑到真实环境,而不是单纯的为了作业而做。
作业一改版,去掉了锁定变量,改为使用文件读取的方式控制账号正确和锁定,把之前的修改全部改作注释进行对比。事先存在两个文件,zhanghao和suoding,用于保存账号和锁定名单,没有在脚本中体现出来。
zhanghao: aaa:111 bbb:222 suoding bbb
#作业一改版 #!/usr/bin/env python #使用两个文件保存用户信息和登录次数,判断是否可以登录 # import os #加载模块 # name1 = "n" #正确的用户名 # pd1 = "qqqqq" #正确的密码 # if os.path.exists("suoding.log"): #判断锁定文件是否存在 # print("系统锁定") # exit(1) #如果存在则退出 suoding=0 #锁定变量 0为非锁定,1为锁定 cishu = 0 #输入错误的次数 zuidacishu = 3 #错误次数上线 a=open("zhanghao").readline() #读取账号文件 b=open("suoding").readline() #读取锁定账号 name = input("请输入用户名:") #把账号放在前面,避免三次输入不同账号所造成的锁定问题 # if suoding==0: for i in range(zuidacishu): #错误次数上线的循环 # suoding=0 # name = input("请输入用户名:") pd = input("请输入密码:") if "%s"%(name) in b: #判断账号是否在锁定名单,在则退出 print("账号被锁定") exit(1) else: # if name == name1 and pd == pd1: #判断账号密码错误 if "%s:%s"%(name,pd) in a: #判断账号密码是否正确 print("认证成功,欢迎进入系统") break else: cishu += 1 #错误次数加一 cishujieguo=zuidacishu-cishu #剩余次数 print("认证失败,您还有%s次机会"%(cishujieguo)) # else: # print("系统已被锁定") # exit(1) if cishu == 3: #判断如果已经错误3次 if "%s"%(name) in b: #判断账号在是否在锁定名单,在则直接退出 print("系统锁定") exit(1) else: f=open("suoding","a") #否则,讲账号加入到锁定名单中 f.write("%s\n"%(name)) f.close() print("系统锁定") # suoding=1 exit(1)
作业二
#作业二 #!/usr/bin/env python msg='输入下列序号进入相应的省份\n1:北京\n2:上海\n3:四川' bj='输入下列序号进入相应的省份\n1:海淀\n2:大兴\n3:通州' sh='输入下列序号进入相应的省份\n1:外滩\n2:鸿口\n3:闵行' sc='输入下列序号进入相应的省份\n1:重庆\n2:渝北\n3:巴南' hd='输入下列序号进入相应的省份\n1:海淀1\n2:海淀2\n3:海淀3' tz='输入下列序号进入相应的省份\n1:通州1\n2:通州2\n3:通州3' wt='输入下列序号进入相应的省份\n1:外滩1\n2:外滩2\n3:外滩3' mh='输入下列序号进入相应的省份\n1:闵行1\n2:闵行2\n3:闵行3' hk='输入下列序号进入相应的省份\n1:鸿口1\n2:鸿口2\n3:鸿口3' bn='输入下列序号进入相应的省份\n1:巴南1\n2:巴南2\n3:通巴南3' cq='输入下列序号进入相应的省份\n1:重庆1\n2:重庆2\n3:重庆3' yb='输入下列序号进入相应的省份\n1:渝北1\n2:渝北2\n3:渝北3' dx=''' 输入下列序号进入相应的省份 1:大兴1 2:大兴2 3:大兴3 ''' print(msg) nb1=int(input("输入序号:")) if nb1==1: print(bj) nb2=int(input("输入序号:")) if nb2==1: print(hd) elif nb2==2: print(dx) elif nb2==3: print(tz) else: print("输入错误") elif nb1 == 2: print(sh) nb2=int(input("输入序号:")) if nb2==1: print(wt) elif nb2==2: print(hk) elif nb2==3: print(mh) else: print("输入错误") elif nb1==3: print(sc) nb2=int(input("输入序号:")) if nb2==1: print(cq) elif nb2==2: print(yb) elif nb2==3: print(bn) else: print("输入错误") else: print("输入错误")
作业二使用的最简单的方式,比较繁琐,应该有更好的更简便的方法完成目标。作业二的解题思路还没有看,改进之后再进行更新。