python - 如何比较两个在python中都包含字符串的变量?
问题描述
我通过将用户名和密码存储在一个单独的文件中并且程序访问它,然后读取密码并将其与用户输入的内容进行比较,从而在 python 中创建了一个帐户登录系统。它可以读取文件中的密码,但由于某种原因,当它与用户输入的密码进行比较时,它总是说它是错误的。
我尝试将实际密码与用户的输入进行比较,并且我知道它正在正确读取文件,因为我让它打印出它读取的内容并打印了正确的密码。我还让它打印了用户的输入,以确保它是正确的并且也可以正常工作。
正如您所知道的,该文件已经存在,其中包含第二行的密码,并且它找到了正确的文件,因为该文件以其所用的帐户命名。
Account = str(input("Enter the username. "))
Account_Password = str(input("Enter the password. "))
AccountFileName = (Account + ".txt")
with open(AccountFileName,"r") as AF:
for x, line in enumerate(AF):
if x == 1:
Account_Password_Check = (line)
if Account_Password == Account_Password_Check:
print("Welcome, " + Account + "!")
else:
print("Either the username or password were incorrect.")
如果用户输入与密码相同,则应打印“欢迎(此处为用户名)!” 如果它们不同,则应打印“用户名或密码不正确”。
如果您知道出了什么问题,请告诉我。
谢谢。
解决方案
在对您的问题的评论中,您会发现它不起作用的第一个原因,但是:
for x, line in enumerate(AF):
if x == 1:
Account_Password_Check = (line)
也不完全正确,enumerate
从零开始计数,但条件检查 1 行,这意味着您将比较您当前的用户密码和以前的密码。正确的版本将是
for x, line in enumerate(AF):
if x == 0:
Account_Password_Check = line.strip()
break
推荐阅读
- python - 如何在不同的图中使用张量?
- javascript - Javascript未捕获引用错误,调用未定义onclick
- orientdb - 在 3.0.0 中,与 ODatabaseDocumentTx 不同,OrientDB 构造函数为内存 DB 抛出异常
- excel - 如何在 Excel VBA 中显示多列组合框?
- java - Java CMS GC - 初始标记
- python - 多次克隆 NumPy 数组
- python - tensorflow u-net python包过滤器贴图尺寸
- java - 无法通过“需要身份验证”登录弹出窗口进入我的 H2 控制台
- python - 作业调度中的希尔伯特曲线实现
- python - 在 python 中,我们如何编写一个在变量之间执行 OR 条件的正则表达式模式