2010-07-27 2 views
1

if 문 아래의 각 루프에 대해 내 코드를 실행할 때 이해가 안됩니다. 발견 된 수가 0보다 큰 경우에도!파이썬 - if 문 사용

def findpattern(commit_msg): 
    pattern = re.compile("\w\w*-\d\d*") 
    group = pattern.finditer(commit_msg) 
    found = getIterLength(group) 
    print found 
    if found > 0: 
     issues = 0 
     for match in group: 
       print " print matched issues:" 
       auth = soap.login(jirauser,passwd) 

       print match.group(0) 
       getIssue(auth,match.group(0)) 
       issues = issues + 1 
    else: 
     sys.exit("No issue patterns found.") 

print "Retrieved issues: " + str(issues) 

어떤 도움을 받으실 지 모르겠지만, 한 시간 동안 내 머리를 두 드렸습니다.

+0

'found '가 숫자라고 생각하는 이유는 무엇입니까? –

+0

나는 확실히 발견 번호입니다. :) – myusuf3

+0

getIterLength는 무엇입니까? 그리고 발견 된 가치는 무엇입니까? – JAL

답변

8

. 그런 다음 for 루프에 대해 새 iterator 인스턴스가 필요합니다. 당신은 당신이 len(group)을 실행할 수있는 (반복 가능하지 반복자 인) 당신에게 목록을 제공하는 대신 finditer()findall() 방법을 사용할 수

def findpattern(commit_msg): 
    pattern = re.compile("\w\w*-\d\d*") 
    group = pattern.finditer(commit_msg) 

    found = 0 
    issues = 0 
    for match in group: 
     print " print matched issues:" 
     auth = soap.login(jirauser,passwd) 

     print match.group(0) 
     getIssue(auth,match.group(0)) 
     issues = issues + 1 
     found += 1 
    if found == 0: 
     sys.exit("No issue patterns found.") 


    print "Retrieved issues: " + str(issues) 

을 OR 대신,이 같은 코드를 재구성 것 크기를 얻은 다음 for 루프에서 반복 할 수 있습니다.

1

, 그것은 당신을 위해 대신 단일 탭의 이중 탭이 아래처럼 보이는 서식 코드를 확인 파이썬을 기억 들여 쓰기에 대해 매우 까다 롭고입니다

귀하의 getIterLength() 기능 finditer()에 의해 반환 된 반복자를 배출하여 길이를 찾는
+0

나는 탭을 고쳤다. 그러나 아직도 아무 mas. – myusuf3

+0

하나의 블록에서 이중 탭을 사용하고 다른 블록에서 단일 탭을 사용하는 것은 실제로 상관하지 않습니다. 들여 쓰기 수준이 블록 중간에서 예기치 않게 변경되지 않는 한 좋은 수준입니다. – James

+0

인터프리터에게는 아무런 문제가 없지만 python * 프로그래머 *는 들여 쓰기를 훨씬 더 잘 이해합니다. – bstpierre