我有一个需要用户名系统的程序,我希望用户输入他们的用户名,程序会检查文件'username'以查看它是否在列表中。如果列表中只有一个人,则下面的代码有效,否则打印正确且不正确。我如何更改我的代码,如果只有一行匹配它打印正确的输入。
username = input("enter username: ")
search = open("username", "r")
for line in search:
if username in line:
print ("correct")
else:
print ("incorrect")
答案 0 :(得分:1)
您可以利用python拥有的for...else
构造。
with open("username") as f:
for line in f:
if username in line:
print("correct")
break
else:
print("incorrect")
如果程序自然退出,则运行else
块 - 不会从循环中退出。
答案 1 :(得分:0)
如果您不喜欢传统的for
循环,那么我建议您使用此解决方案:
with open("username") as f:
isInList = [username in line for line in f]:
if any(isInList):
print ("correct")
else:
print("incorrect")
答案 2 :(得分:0)
实现这一目标的一种方法是在找到匹配后简单地返回。使用return并将逻辑封装到函数中将允许您使用result执行其他操作。另外,我建议使用with
语句打开文件,因为它有更好的错误处理,并自动处理关闭文件和清理。 Here是关于with
声明的简短教程。
username = input("enter username: ")
def read_file():
with open("username", "r") as f:
for line in f:
if username in line:
return "correct"
else:
return "incorrect"
result = read_file()
print(result)
# Or do whatever else you want with the result