2016-07-18 2 views
1

11 줄의 파일이 있습니다. "XYZ"가 포함 된 줄을 건너 뛰고 나머지 줄의 첫 번째와 두 번째 열을 반환하는 함수를 작성하고 있습니다. 모듈을 실행하면 "XYZ"라인을 건너 뛰지 만 나머지 라인 중 첫 번째 라인 만 리턴합니다. I 인터프리터 (즉, I는 모듈로 반입하지 ​​않음)에 for 루프를 테스트 할 때파이썬 함수가 파일의 한 줄로 사전을 채우는 이유는 무엇입니까?

def popdict(my_file): 
    for line in my_file: 
     if "XYZ" in line: 
      pass 
     else: 
      x = line.split() 
      a = x[1] 
      b = x[0] 
      d[a] = b 
      return d 

이상하게, 그것은 정확한 행을 산출한다.

의견이 있으십니까?

+1

귀하의'return' for-loop 내부에서 첫 번째로 else 절이 실행될 때 function에서 함수를 반환합니다! –

답변

0

"XYZ"가없는 행을 처음 발견하면 외부 함수에서 돌아옵니다. 당신이 파일이 끝날 때까지 대기 할 경우, 루프에서 반환 문을 제거 :

def read_to_dict(): 
    for line in my_file: 
     if "XYZ" not in line: 
      x = line.split() 
      a = x[1] 
      b = x[0] 
      d[a] = b 

    return d 
0

당신해야 return 바로 파일 마감을 통해 루프 후 :

def popdict(my_file): 
    for line in my_file: 
     if "XYZ" in line: 
      pass 
     else: 
      x = line.split() 
      a = x[1] 
      b = x[0] 
      d[a] = b 
    return d 
관련 문제