所以我有一个文本文件,其中包含我的程序用户的详细信息。
在我的程序中,我有一个登录系统,可以从这个文本文件中检索数据,但是当我到达它结束时我不知道如何分辨。
来自文本文件的数据样本如下所示:
鲍勃,Bob15,足球,15
我的代码如下:
username = input("Enter username: ")
password = input("Enter password: ")
file = open("userDetails.txt", "r")
match = False
while match == False:
finished = False
while finished == False:
for each in file:
each = each.split(", ")
realUser = each[1]
realPass = each[2]
if realUser == username and realPass == password:
match = True
finished = True
print("match")
elif each == "":
finished = False
username = input("Re-enter username: ")
password = input("Re-enter password: ")
match = False
else:
finished = False
我不确定的部分是elif each == "":
部分。
有什么想法吗?
答案 0 :(得分:1)
鉴于这个问题,我相信在这里使用for-else
条款是理想的
注意:当循环正常退出时,执行else
循环的for
子句,即不会遇到break
语句。
<强>算法强>
1.询问用户输入
2.首先将标记match
设置为False
3.在文件中搜索,直到找到匹配项为止
4.使用上下文管理器打开文件;确保文件在操作后关闭
5.找到匹配后,在将标记match
设置为True
的同时,立即退出文件循环。
6.如果未找到匹配项,请要求用户重新输入凭据并再次执行搜索操作
7.继续,直到找到匹配。
<强> CODE 强>
username = input("Enter username: ")
password = input("Enter password: ")
match = False
while not match:
with open("userDetails.txt", "r") as file:
for line in file:
user_data = line.split(",")
real_user, real_pass = user_data[1].strip(), user_data[2].strip()
if username == real_user and password == real_pass
print('Match')
match = True
break
else:
username = input("Re-enter username: ")
password = input("Re-enter password: ")
提示:您也可以试试CSV模块,以便在Python中读取数据文件。
答案 1 :(得分:0)
当到达循环结束文件的末尾时,正确的代码是:
file = open("userDetails.txt", "r")
match = False
while match == False:
for each in file:
each = each.split(", ")
realUser = each[1]
realPass = each[2]
if realUser == username and realPass == password:
match = True
print("match")
elif each == "":
username = input("Re-enter username: ")
password = input("Re-enter password: ")
match = False