Python 打开文件 - If Else 语句

Python Open File - If Else Statement

我对代码的输出感到困惑。

这是我的文件:

201707001 Jenson_ 
201707002 Richard 
201707003 Jean

这是我的代码:

def studentInfo (userInput):  # storing student info
    # read the students file
    with open('C:\Users\jaspe\Desktop\PADS Assignment\Student.txt') as f:
        for line in f:
            stdId, stdName = line.strip().split(" ", 1)
            # check if the student exist
            if userInput == stdId:
                print("Student found!")
                print("Student ID: " + stdId + "\nStudent Name: " + stdName)
            else:
                print("The student does not exist")


studentFinder = input("Please enter id: ")
studentInfo(studentFinder)

这是我的代码输出

Please enter id: 201707001
Student found!
Student ID: 201707001
Student Name: Jenson
The student does not exist
The student does not exist

如何修复我的代码?

您的 else 声明来得太早了。找到后会输出"found",下一行会输出"not found"!

直到到达文件末尾,您才能知道您没有找到学生。

让我提出一个使用 else 对应 for 的解决方案:

    for line in f:
        stdId, stdName = line.strip().split(" ", 1)
        # check if the student exist
        if userInput == stdId:
            print("Student found!")
            print("Student ID: " + stdId + "\nStudent Name: " + stdName)
            break
    else:
        print("The student does not exist")

现在,如果找到学生,请致电 break。如果未调用 break,则进入 for 循环的 else。不错 python 功能,不知名

(多次匹配无效)

请注意,在长 运行 中,您可能希望将文件内容存储在字典中,以便在多次搜索时查找速度更快:

with open('C:\Users\jaspe\Desktop\PADS Assignment\Student.txt') as f:
    d = dict(zip(line.split(" ",1) for line in f)

现在d是你的id => name字典,当你有很多查询要执行时使用快速查找(文件只读一次,字典使用哈希进行快速搜索)