Python 要求我的代码读取外部文件中的第一行,但它不起作用,但当我要求读取第二行时,它起作用

Python 要求我的代码读取外部文件中的第一行,但它不起作用,但当我要求读取第二行时,它起作用,python,Python,用户文件已被删除 m、 l s、 l 出于某种原因,当我输入username:m和password:l时,它不起作用,并以“否”回应,但当我输入s时,它起作用 或者,如果我从用户文件中删除s,l,然后输入m,l,它工作正常 我的代码有问题吗?这是完成任务的一种方法。基本上,我把这些组合分成了两组。例如,数据将等于。 [['m',l'],['s',l']],因为这是密码和用户名的组合。然后用户将输入他们自己的pwd和usr,我们将检查该组合是否可以在数据中匹配 您遇到的另一个主要问题是,是的,您

用户文件已被删除 m、 l s、 l

出于某种原因,当我输入username:m和password:l时,它不起作用,并以“否”回应,但当我输入s时,它起作用

或者,如果我从用户文件中删除s,l,然后输入m,l,它工作正常


我的代码有问题吗?

这是完成任务的一种方法。基本上,我把这些组合分成了两组。例如,数据将等于。
[['m',l'],['s',l']]
,因为这是密码和用户名的组合。然后用户将输入他们自己的pwd和usr,我们将检查该组合是否可以在
数据中匹配


您遇到的另一个主要问题是,是的,您在逗号处拆分数据,但是您还必须在空格处拆分数据,否则数据看起来会很奇怪。 为了做到这一点,这段代码使用正则表达式在多个delimeters处拆分字符串


我们的产出(s、l)

我们的产量(m,l)


请尝试以下操作。您的拆分不正确

Enter your username: m
Enter your password: l
Welcome to Music Quiz.

注意:我已经为你要求的第一例m和l做了完美的程序。但是,通过正确的拆分,您也可以使程序适合其他情况。

查看缩进,其他缩进应该与if
print(repr(data))
处于同一级别,并查看您实际读取的内容。我打赌
以换行符结尾,因此在与密码进行比较之前,您需要
.rstrip('\n')
。请提供预期的(MRE)。我们应该能够复制和粘贴一个连续的代码块,执行该文件,并再现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和期望的输出来测试我们的建议。显示中间结果与您预期的不同之处。不接受场外链接和文本图像;我们需要您的问题是自包含的,以符合本网站的目的。您发布的代码挂起等待输入-不要期望我们输入测试数据或构建测试文件。相反,只需硬编码一个导致问题的测试用例。
import re
def login():
    drug = True
    while True:
        username = input("Enter your username: ")
        password = input("Enter your password: ")
        for row in open("user.txt", "r"):
            #split the row so that it looks like this ['m', 'l', 's', 'l']
            #other wise it would look like this ['m', 'l s', 'l']
            data = re.split(",| ",row)
            #this pairs the list into groups of two.
            x = [data[i:i + 2] for i in range(0, len(data), 2)] 
            #check if the user's pwd and usr combo is equal to the files comb
            for combinations in x:
                if [username,password] == combinations:
                    print("Welcome to Music Quiz.")
                    return username
            else:print("no")

login()
Enter your username: s 
Enter your password: l
Welcome to Music Quiz.
Enter your username: m
Enter your password: l
Welcome to Music Quiz.
def login():
    drug = True
    while True:
        username = input("Enter your username: ")
        password = input("Enter your password: ")
        with open("user.txt", 'r') as f:
            for row in f.readlines():
                data_list = row.split(" ")   #Correction here
                data = data_list[0].split(",")
                print(data[0],data[1])
                if username == data[0].strip() and password == data[1]:
                    print("Welcome to Music Quiz.")
                    return username

                else:
                    print("no")

login()