Python课程题目。
业务需求:实现一个登陆功能,输入错误三次锁定。
初学python,还未涉猎相关IO知识。通过分析简要逻辑,上网查找文件操作方法,设计了一段简要代码。
1 # 储存正确的用户名、密码 2 USERNAME = "anyan" 3 PASSWORD = "Aa123." 4 5 ''' 6 业务逻辑部分: 7 1.读取文件,如果用户输入的用户名对应的错误次数小于3,则允许继续运行。如果错误次数大于等于3,提示“用户已锁定” 8 2.读取文件中的对应用户名的错误次数,记录在变量errorNum中。循环获取用户输入的用户名、密码。 9 3.检验用户名、密码是否正确。如果正确且errorNum小于3提示“登陆成功”,将errorNum写入文件并跳出循环。 10 4.如果错误提示“用户名/密码不正确,请重新输入”,循环输入。如果errorNum大于等于3,提示“用户已锁定”。并将errorNum写入文件,并跳出循环。 11 12 难点: 13 1.读取、写入文件的方式及文件格式。 14 1.1 直接写入数字 15 1.2 如果数字小于3,则未锁定,继续流程。 16 1.3 如果数字大于3,提示锁定。 17 1.4 每进行一次校验,wirte一次文件。(需要提前记录下来错误次数) 18 2.循环 19 ''' 20 21 FILENAME = "D:/workspace/Py/01/errorNum.txt" 22 file = open(FILENAME) 23 errorNum = int(file.readline()) 24 if errorNum < 3: 25 while True: 26 username = input("请输入用户名:") 27 password = input("请输入密码:") 28 if username == USERNAME and password == PASSWORD: 29 print("登陆成功") 30 break 31 else: 32 print("用户名或密码输入错误。")34 errorNum += 1 35 print("即将进入判断的错误次数:", errorNum) 36 if errorNum > 3: 37 print("您的密码已经输入错误三次。") 38 open(FILENAME, 'w').write(str(errorNum)) 39 break 40 else: 41 print("该用户已锁定") 42 file.close()
实现过程中遇到的问题:
一、
问题:判断errorNum>3时报错TypeError: '<' not supported between instances of 'list' and 'int'。
解决办法:open(FILENAME).readline()为list类型,将其转换为int后赋值给errorNum
二、
问题:执行open(FILENAME, 'w').write(errorNum)时,报错TypeError: write() argument must be str, not int
解决办法:将errorNum强制转为str类型。open(FILENAME, 'w').write(str(errorNum))