-
33.5 연습문제: 호출 횟수를 세는 함수 만들기코딩도장 심사문제모음 2020. 11. 6. 22:27728x90
다음 소스 코드를 완성하여 함수 c를 호출할 때마다 호출 횟수가 출력되게 만드세요. 여기서는 함수를 클로저로 만들어야 합니다.
풀이
1. 먼저 counter 를 클로저로 만들어주기 위해
counter 함수 안의 count 함수를 직접 함수를 호출하지 않고 리턴으로 count 값을 직접 반환
counter 함수에 c를 할당하였고
counter 에서 count를 반환하였기에 c에도 count가 들어가게된다.
2. nonlocal i 를 이용해 바깥쪽 함수의 지역 변수 i 를 i = i +1 로 변경해준다
함수가 실행될때마다 i 값은 누적된다.
3. 누적된 i 값이 즉 호출 횟수이므로 이를 반환하여 counter 에게로 궁극적으로는 c로 반환되도록 해준다.
def counter(): i = 0 def count(): nonlocal i i = i + 1 return i return count ## counter 함수를 클로저로 만들어주는데 핵심인 코드로 생각됨 c = counter() for i in range(10): # 0 ~ 9 print(c(), end=' ') :: 1 2 3 4 5 6 7 8 9 10
728x90'코딩도장 심사문제모음' 카테고리의 다른 글
34.5 연습문제: 게임 캐릭터 클래스 만들기 (0) 2020.11.08 33.6 심사문제: 카운트다운 함수 만들기 (0) 2020.11.06 32.5 심사문제: 파일 이름을 한꺼번에 바꾸기 (0) 2020.11.06 32.4 연습문제: 이미지 파일만 가져오기 (0) 2020.11.05 31.5 심사문제 : 재귀호출로 피보나치 수 구하기 (0) 2020.11.04