首页 > 解决方案 > 为什么if语句不比较文本文件中的数据?Python

问题描述

我正在尝试创建一个简单的登录系统。问题是,即使我输入了正确的用户名和密码,if 语句也根本没有执行。这是我第一次提问。来自文本文件的数据:

泰德, teddy@gmail.com, 12345678
豆豆,bean@gmail.com,12345678
with open('data.txt') as f:
    f_read = f.read().split()
    print(f_read)



n = str(input("Do you have an account?yes/no: "))

while n == "yes":
    username_check = input("enter a username: ")
    checkpass = input("enter your password: ")

    for line in open('data.txt','r').readlines():
        loginDetails = line.split()
        if username_check == loginDetails[0] and checkpass ==  loginDetails[2]:
           print("accepted")
           break
    else:
        print('not accepted')

这是输出。

您有帐户吗?是/否:是
输入用户名:bean
输入您的密码:12345678
不接受
输入用户名:

标签: python-3.xif-statement

解决方案


问题是分隔文件中字段的逗号。

当你做loginDetails = line.split()的内容loginDetails将是例如['bean,', 'bean@gmail.com,', '12345678']

当你比较它们时'bean''bean,'它们将不匹配。

可能的解决方案包括更改输入文件的格式,或使用逗号分隔值模块来读取文件。或以逗号分隔,如另一个答案所示。


推荐阅读