我有一个文件,其中包含有关学生的数据,例如他们的姓名,地址,年级等。我创建了一个函数,该函数将根据学生的名字和姓氏从文本文件中删除整行。此功能正常工作。但是,此后,我决定更新它,以便如果用户输入的名称不在文件中,则它将打印:找不到学生。但是,即使现在,即使用户键入文件中的名称,它仍会打印:找不到学生...
这是我的代码:
def delete_a_record(filename):
x=input("Remove First Name:")
y=input("Remove Last Name:")
with open(filename, "r") as f:
lines = f.readlines()
with open(filename, "w") as f:
for i in lines:
t=i.split()
if t[0]!=x and t[1]!=y:
f.write(i)
elif x or y not in t:
print("Student Not Found")
f.close()
delete_a_record("mytextfile.txt")
有人可以向我解释为什么吗?
[可能是因为您正在逐行进行迭代,所以即使名称每次都与当前行都不匹配都在.txt文件中,它也会打印“ Student Not Found”。您需要重写您的函数,以便仅在行已用完且未找到名称时才执行打印语句。
关于我不了解的问题(如果我错了,请纠正我),我想您的逻辑中有两个问题。
if t[0]!=x and t[1]!=y:
f.write(i)
elif x not in t and y not in t:
print("Student Not Found")
现在的方式,如果x不为None,则条件elif x or ...
将始终返回true,因为x的值为True。