2017-05-20 2 views
2

이것은 다음 번에 대한 조언이 감사할만한 첫 번째 질문입니다.파일에 x가있는 대신 x == x로 된 줄을 찾으십시오.

그래서 문제는 내가 == x 인 행을 찾지 못하는 것입니다. 그 안에 x가있는 줄만 찾을 수 있습니다. 내가하려고하면 :

import time 
x = input("Enter password here...\n") 
start = time.time() 
with open("passwords.txt", "r") as f: 
    for line in f: 
     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") 

프로그램은 x가 실제로 않는 경우에도 목록에서 단어를 동일, 아무것도 인쇄하지 않고 목록과 마무리를 통해 이동합니다. 하지만 여기서 더 흥미로운 부분이 있습니다 ... 위의 코드를 실행하면 입력 한 모든 내용에 오류가 발생합니다 ... 단어 목록의 마지막 단어를 입력 (x)으로 입력하면 예외입니다. 마지막 단어는 "albert"이고 입력하면 결과를 반환합니다.


나는 내가 끔찍한 설명자입니다 알고 있지만 당신이 내 주요 코드를 삽입하고, 단어 목록을하려고하면 나는 연결하고 다음 줄에 x를하면 편집 : if line == x 수하는 단어로 시도 비밀 번호와 같은, 당신은 그것이 작동하지 않는 것을 볼 수 있습니다. 그런 다음 앨버트로 시도해보십시오. 멍청이입니다.

사용자가 입력 한 줄이 그 줄이 있고 그 안에 들어 있지 않은지 확인하는 방법이 있습니까? "즉, 단어 테스트는 테스트 중이므로 테스트는 x = 테스트 뿐이며 테스트가 아닙니다."

+0

'else :'는'if'가 아닌'for' 문에 있어야합니다. 그렇지 않으면 암호와 일치하지 않는 모든 행에 대해 해당 메시지가 표시됩니다. – Barmar

+0

@DarkstaroneFoxTxt 파일을 추가 하겠지만 여기에있는 사람들은 문제를 해결하기 위해 모든 장비가 필요하지는 않습니다. – 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" 

전체 라인에 읽을 파일 : 당신이 같은 텍스트 파일에서 줄을 읽어

관련 문제