Python 为什么这个简单的身份验证不起作用
好的,我写了以下代码:Python 为什么这个简单的身份验证不起作用,python,authentication,Python,Authentication,好的,我写了以下代码: Authorised = False while not Authorised: useri = input("Enter your username: ") passi = input("Enter your password: ") users = open("Users.txt", "r") EndOfFile = False while not
Authorised = False
while not Authorised:
useri = input("Enter your username: ")
passi = input("Enter your password: ")
users = open("Users.txt", "r")
EndOfFile = False
while not EndOfFile:
userr = ""
passr = ""
line = users.readline()
if line == "":
EndOfFile = True
continue
splitlines = line.split(",")
userr = splitlines[0]
passr = splitlines[1]
if useri == userr:
if passi == passr:
username = userr
EndOfFile = True
Authorised = True
users.close()
else:
print("Wrong Password")
EndOfFile = True
users.close()
if userr == "":
print("Invalid username")
Users.txt:
A,B,
B,A,
出于某种原因,当我运行它时,它会说密码是错误的。我不知道为什么。如果有人能向我解释这一点,我将不胜感激
谢谢奇怪的传输错误。我把Users.txt存储在onedrive上,从onedrive上取下,放到我的iPad上,并使用Python作为IDE。我不确定到底发生了什么。抱歉,哈哈,当我发布评论时,我已经重新编写了你的代码,站起来喝杯咖啡,开始聊天,但是你会得到帖子的。不管怎样,这里有一些提示
- 你在每个循环中读取密码,你不需要这样做
- 你可以更干净地打破你的while循环
- 在所选内容的
和if
部分,即else
users.close()
- 在python中,使用上下文管理器来处理文件i/o更容易
:
用户={}
lines=[line.replace(“\n”,”)作为pass_文件中的行。readlines()]
对于行中的行:
split_line=line.split(',')
用户[分割线[0]]=分割线[1]
尽管如此:
useri=input(“输入您的用户名:”)
passi=input(“输入密码:”)
如果用户中有useri:
如果用户[useri]==passi:
打印('有效用户')
打破
其他:
打印('InvadId登录')
其他:
打印('无效登录')
通过这种方式,您可以与所有用户一起构建一个初始的
dict
对象,然后检查它。我无法重现该问题。这对我来说很好。你确定你正在通过大写输入,即A
和B
?是的,我刚刚输入了A
和B
输入你的用户名:A输入你的密码:B
输入你的用户名:
你能分享你的输入和目标吗?我可以重现你的错误,我想我知道什么不起作用,什么都没有错,我只是不认为你写了你想要的,我不知道发生了什么,我已经重新写了txt,它现在起作用了。真奇怪,谢谢你!我试试这个:)