2017-10-15 104 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萬名的文件之間沒有顯著的性能差異。

相關問題