2017-10-15 11 views
-2

私は、名前と呼ばれるテキストファイルの5行目と入力を比較するプログラムの一部をコーディングしようとしました。ファイルには各行にテキストがあり、現在のコードではファイル内に1行のテキストしかない場合(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番目の文字を選択しています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') 

驚くべき、標準反復可能としてオープンされたファイルを処理することも10万名前のファイルのために、readline()経由linesにラインを読んだとの間に有意なパフォーマンスの違いはありません。

関連する問題