2013-03-29 3 views
0

저는 여전히 Python을 처음 접했고 스크립트에서 "완벽한 결과"를 얻는데 어려움을 겪고 있습니다.Python 혼합 결과 얻기.

#import urllib2 
#file = urllib2.urlopen('https://server/Gin.txt') 
Q = raw_input('Search for: ') 

if len(Q) > 0: 
     for line in open('Gin.txt'): #Will be corrected later.. 
       if Q.lower() in line.lower(): 
         print line 

       #print "Found nothing. Did you spell it correct?" ## problem here. 
else: 
     os.system('clear') 
     print "You didn't type anything. QUITTING!" 

이제 코드가 작동 :

여기에 지금까지 내 코드입니다. 그러나 일치하는 항목을 찾지 못하면 찾고있는 항목을 찾습니다. "아무것도 찾지 못했습니다 ..."라고 인쇄하고 싶습니다. 나는 모든 종류의 결과를 얻었으며, 잘못된 결과와 일치하는 내용을 혼합했습니다. 거의 모든 것이 원하는 결과였습니다. 그것은 아마 당신의 대부분을위한 케이크의 조각이다. 그러나 나는 지금 8 시간 이상 계속되었다. 그래서 지금 나는 여기에있다.

작성하는 것이 더 좋고/더 쉽고/더 예쁜 방법이 있다면 실수를 바로 잡으십시오. 나는 완벽을 목표로하고있다! 그래서 저는 모두 눈과 귀입니다. FYI. gin.txt!#_'[] 0..9에서 대문자

답변

4

for 루프가 else: 절을 가지고하는 모든 것을 포함한다. 당신 끝 초기 루프하지 않았다 때이 실행됩니다

for line in open('Gin.txt'): #Will be corrected later.. 
    if Q.lower() in line.lower(): 
     print line 
     break 
else: 
    print "Found nothing. Did you spell it correct?" 

참고 break; for 루프를 벗어남으로써 else: 제품군은 이 아니며이 실행되지 않습니다.

물론 첫 경기에서 중단됩니다. 이 경우이가 OP의 코드와 일치하지 않는 것을,

found = False 
for line in open('Gin.txt'): #Will be corrected later.. 
    if Q.lower() in line.lower(): 
     found = True 
     print line 

if not found: 
    print "Found nothing. Did you spell it correct?" 
+0

(+1) 그것은 그러나, 주목할 가치가있다 : 여러 일치를 찾을 필요가있는 경우에, 당신의 유일한 옵션은 플래그 변수의 형태를 사용하는 것입니다 여러 경기. – NPE

+0

@ Martins 귀하의 답변에 감사드립니다. 짧고 필요한 것. – jacko