2017-10-15 105 views
-2

我试图编写程序的一部分,将输入与名为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
name = input("enter name: ") 
with open("name") as f: 
    lines = f.readlines() 
    if lines[4] == name: 
     print("correct") 
    else: 
     print("incorrect") 

你的代码应该是这样的;当前代码的问题在于,您认为line指的是所有行,而它只涉及当前的连续行,并且您在使用[4]时所做的操作是选择与该行相对的第5个字符第五行。

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') 

令人惊讶的,有治疗打开文件作为标准迭代,并通过readline()读线为lines,即使是拥有10万名的文件之间没有显著的性能差异。

相关问题