题目是:编写登录接口
要求:1、输入用户名和密码;
2、认证成功后显示欢迎信息
3、输错三次后锁定;
首先根据题目要求做了如下流程图:
2、初次接触python,很多细节知识还不熟,准备把自己编程过程中遇到的问题,及解决方法记录下来,为以后的学习做积累,也为其他初学python学习者提供经验。
1)编程过程中,出现了错误提示:“unexpected indent”。
出现这个错误的原因是:输入语句,多缩进了4个格。
2、编程过程中用到了,打开txt文档的功能。
问题1:怎么实现打开txt文档?
lock_file=open("txt文档路径")
lock_list=lock_file.readlines()
print(lock_list)
就实现了基本的打开txt文档的功能;
问题2:当txt文档中有字符串和数字时,打开txt文档,
lock_file = open ("D:\python\studydiary\oneweek\user.txt")
提示错误信息:(unicode error) 'unicodeescape' codec can't decode bytes in position 28-29: truncated \uXXXX。
这是因为,在python中“\”表示转义字符。
解决办法是:1)在字符串前面加一个“r”就可以了。
lock_file = open (r"D:\python\studydiary\oneweek\user.txt")
2)在“\”前面再加一个“\”进行转义,lock_file = open ("D:\\python\\studydiary\\oneweek\\user.txt")
问题3:txt文档中存放的是 “
zhanger
lili
baidu
用上述程序读出来的结果是:
['zhanger \n', 'lili\n', 'baidu\n']”
不想要“\n”怎么解决?
解决方法:使用strip()函数去掉每行结束的\n
strip()函数原型
声明:s为字符串,rm为要删除的字符序列
s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符
例如:
for line in file.readlines():
line=line.strip('\n');
在本例中解决代码如下:
lock_file = open ("D:\\python\\studydiary\\oneweek\\lockeduser.txt")
lock_list = lock_file.readlines()
for lock_line in lock_list:
lock_line=lock_line.strip('\n')
print(lock_line)
运行程序后,输出结果如下:
3、实现出现异常,要异常退出功能。
python中退出程序的两种方法,sys.exit和os.exit(0),0为默认状态,可以为空,两者均会退出当前运行的程序。os.exit中的0不能省略。
1)sys.exit(0):可以捕获systemexit异常,然后做相应的清理工作,执行结果是直接输出goodbye。
2)os.exit(0):直接中断并立即退出程序,什么也不管。
在该程序中,要求,当在锁定用户库中查询到为锁定用户,则显示,改用户名为锁定用户,并异常退出,所以用sys.exit()
4、从txt文本中读取文档,是如下形式的
‘zhangsan 123’ ‘lisi 234’ ‘zhangping 345’
怎么实现将名字和密码分开提取和存储?
python中,用split()函数来实现字符串切割功能。split()语法结构如下:
str.split(str="",num=string.count(str))
例如:
str="I come from Beijing"
print(str.split()) #以空格为分隔符进行分割
print(str.split('o',1)) #以第一个o为分隔符进行分割
print(str.split('m')) #以m为分隔符进行分割
以上实例输出结果如下:
[‘I','come','from','Beijing']
['I c','me from Beijing']
['I co','e fro','Beijing']
5、该功能函数代码如下:
import sys,getpass,io i=0 while i<3: username = input("username:") locked_user_information = open(r"//Users//yxy-zhaolu//Documents//Share Data//9//locked_user_information.txt") locked_user_list = locked_user_information.readlines() user_information = open("//Users//yxy-zhaolu//Documents//Share Data//9//user_information.txt") user_information_list = user_information.readlines() for locked_user_line in locked_user_list: #打开锁定用户名的文档并搜索该用户是否为锁定用户 locked_user_line=locked_user_line.strip('\n') if username ==locked_user_line: print("sorry,this username had locked!") sys.exit() for user_information_line in user_information_list: (user_name,pass_word) = user_information_line.strip('\n').split() if username == user_name: j=0 while j<3: password = input("password:") if password == pass_word: print("welcome you, ",username) sys.exit() else: if j<3: print("sorry,you have wrong password,please try again") j=j+1 else: add = open("//Users//yxy-zhaolu//Documents//Share Data//9//locked_user_information.txt",'w') locked_user_information=add.write(username) locked_user_information.close() sys.exit else: print("this username is not exist") pass i=i+1 else: sys.exit() locked_user_information.close() user_information.close()