我试图编写一个程序的一部分,该程序将输入与名为name的文本文件的第五行进行比较。该文件在每一行都有文本,并且当前代码只有在文件中只有一行文本(第5行之前的空白行)时才有效,但是当文件有30行文本时我需要它才能工作。 文本文件如下所示:
John
James
Bob
Jim
Jack
Harry
Oliver
需要更改为我的代码:
names = input("enter name: ")
with open("name") as f:
for line in f:
if line[4].split('\n') == names:
print ("correct")
else:
print("incorrect")
答案 0 :(得分:0)
name = input("enter name: ")
with open("name") as f:
lines = f.readlines()
if lines[4] == name:
print("correct")
else:
print("incorrect")
你的代码应该是这样的;您当前代码的问题在于您认为line
指的是所有行,而它只指当前的连续行 - 您使用[4]
执行的操作是选择该行的第5个字符与第5行相对。
答案 1 :(得分:0)
names = ['John',
...: 'James',
...: 'Bob',
...: 'Jim',
...: 'Jack',
...: 'Harry',
...: 'Oliver']
with open('filename.txt') as f:
for idx, line in enumerate(f):
if idx == 4:
break
print('Correct' if line.rstrip() == input('Name: ') else 'Incorrect')
令人惊讶的是,将打开文件视为标准可迭代文件并通过lines
将行读入readline()
之间没有明显的性能差异,即使对于具有100,000个名称的文件也是如此。