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字典,当你有很多查询要执行时使用快速查找(文件只读一次,字典使用哈希进行快速搜索)
我对代码的输出感到困惑。
这是我的文件:
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字典,当你有很多查询要执行时使用快速查找(文件只读一次,字典使用哈希进行快速搜索)