2017-05-20 7 views
2

これは私の最初の質問ですので、次回のアドバイスに感謝します!ファイルにxが入っているのではなく、x == xの行が見つかる

だから、問題は、== xという行を見つけることができないということです。私はxが入っている行しか見つけることができません。私が試してみると:xが実際にリスト内の単語と同じであっても、プログラムは何も印刷せずにリストを通過して終了します。しかしここではもっと興味深いところです。上のコードを実行すると、入力したすべてのものに対してエラーが発生します...単語リストの最後の単語を入力(x)として入力する場合を除いて例外です。最後の単語は "albert"で、それをタイプすれば私が探している結果が返されます。


私はひどい説明する人だ知っているが、あなたは私のメインのコードを入れて、単語リストでそれをしようとした場合、私は添付して、行であればXを編集します:if line == xことや言葉でそれを試してみますパスワードのように、あなたはそれが動作しないことがわかります。それから、アルバートとのpoofとそれを試してみてください。

ユーザーが入力した行が等しくないかどうかを確認する方法はありますか?つまり、単語テストはテスト中です。テストはx =テストだけではなく、テストを返すべきです。 "

+0

'else:'はおそらく 'if'ではなく' for'ステートメントにあるべきです。そうしないと、パスワードと一致しないすべての行にそのメッセージが表示されます。 – Barmar

+0

@Darkstaroneあなたはここにいる皆さんがtxtファイルを追加することを忘れないでください。 – Owen

+0

ありがとうございました@zwer – Owen

答えて

2

"albert\n" 

すべての行に改行文字が最後を除いてありますので。したがって、あなたのコードを次のように変更してください:

import time 
x = input("Enter password here...\n") 
start = time.time() 
with open("passwords.txt", "r") as f: 
    for line in f: 
     line = line.rstrip() 
     if line == x: 
      print("Your password is " + line) 
      end1 = time.time() 
      print("It took " + str(float(end1 - start)) + " seconds to locate your password") 
      break 
     else: 
      print("Passed check") 
3

ファイル内の行を読み込んでいるときには、行終了記号も使用しています。\nまたは\r\n)をプラットフォームに依存する。確認する前にそれらを直ちに取り除いてください。

if line.rstrip() == x: 
    # etc. 

最後のものは、それの後に新しい行がないために機能しました。

"albert" 

行全体に読まれるファイル:あなたのようなテキストファイルから行を読み込む

関連する問題