Python登陆锁定功能实现

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))

 

posted @ 2017-10-30 21:42  溯琮  阅读(525)  评论(0编辑  收藏  举报