需求:
由于没有学习到Python的数据库,所以我用文本文件来读取数据
代码:
# -*- coding:utf-8 -*-# author:ke_Timport os,sysu_i_name = input("请输入你的用户名")u_i_password = input("请输入你的密码")black_name = open("E:\\大三\\上学期\\数据语言\\pythonProject\\day1\\test1.txt", "r")line = black_name.readline()name1 = u_i_namewhile line: if(line.strip() == u_i_name): print("该用户已经进入黑名单") exit() line = black_name.readline() try: bl = True count = 0 while bl: fock = open("E:\\大三\\上学期\\数据语言\\pythonProject\\day1\\test.txt", "r") while True: line = fock.readline() user = line.split(":") name = user[0] password = user[1] if(u_i_name == name.strip()): if(u_i_password == password.strip()): print("恭喜你登录成功") bl = False break else: count += 1 print("登录失败,账户名或者密码错误,请重新输入,用户{0}还有{1}次机会".format(u_i_name,3-count)) if count==3: black_name = open("E:\\大三\\上学期\\数据语言\\pythonProject\\day1\\test1.txt", "a") black_name.writelines("\n{0}".format(name)) print("你已经进入黑名单") exit() u_i_name = input("请输入你的用户名") u_i_password = input("请输入你的密码") break elif line == "": print("找不到该用户,请检查你的用户名") u_i_name = input("请输入你的用户名") u_i_password = input("请输入你的密码") break finally: fock.close() black_name.close()
完成这道题,我遇到什么问题呢?首先是文本文件读取方式,这个没学过python的,因此哦我上网查了查。它用的是open()函数,这个open函数,第一个参数写的是文件读取的地址,第二个参数的读取该文件的方式,像我的代码中的r+的读取方式,就是代表着不仅读,下面百度的open函数的读取文件的方式:rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)w 以写方式打开,a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)r+ 以读写模式打开w+ 以读写模式打开 (参见 w )a+ 以读写模式打开 (参见 a )rb 以二进制读模式打开wb 以二进制写模式打开 (参见 w )ab 以二进制追加模式打开 (参见 a )rb+ 以二进制读写模式打开 (参见 r+ )wb+ 以二进制读写模式打开 (参见 w+ )ab+ 以二进制读写模式打开 (参见 a+ )open函数的使用需要导入os,所以不能忘记import os。最让我惊讶的是,在字符的比价卡了好一会,因为用的方法错了,用了.__str__()来忽略空格和换行符,发现不对,头疼啊。后来才发现不是这个,而是strip(),心酸。在这里浪费了许多的瞬间,很难受,期间自己给字符加换行符再比较,最终还是原有的函数好用。
下面是我思路的流程图:
我一开始的思路是想着把用户名,密码,还有次数都存在一个文件里面的,但是在修改的时候,出现了问题,就是找不到方法直接修改文本的那一行。上网找了,发现大多数的解决方法就是重写,感觉效率太低了这样子。因为我觉得之后如果学习了数据库,这个问题不大。
时间: 2024-10-03 13:45:34