-
33.6 심사문제: 카운트다운 함수 만들기코딩도장 심사문제모음 2020. 11. 6. 22:38728x90
표준 입력으로 정수가 입력됩니다. 다음 소스 코드를 완성하여 함수 c를 호출할 때마다 숫자가 1씩 줄어들게 만드세요. 여기서는 함수를 클로저로 만들어야 합니다. 정답에 코드를 작성할 때는 def countdown(n):에 맞춰서 들여쓰기를 해주세요.
사용한 코드
1. nonlocal
2. def
3. return
첫 접근 방법
10을 입력할 경우 10(포함), 9, 8, ... 1 이 마지막이라는 것을 기준으로 범위만 정해주면
이전 연습문제와 같이 어려운 부분없이 문제 해결이 가능하다.
풀이
1. countdown의 지역 변수 count 를 만들고 n + 1로 입력된 n 값도 함께 출력되도록 만들어준다.
def countdown(n): count = n + 1
2. down이라는 안쪽 함수를 하나 더 생성한다 (클로저사용을 위함)
함수 생성시 nonlocal 키워드 를 이용해 바깥 함수의 지역 변수 count를 count = count - 1로 변경해준다.
변경 후 재할당된 count를 리턴해준다.
def countdown(n): count = n + 1 def down(): nonlocal count count -= 1 return count return down n = int(input()) c = countdown(n) for i in range(n): print(c(), end=' ')
## c= countdown(n) --> countdown 함수를 클로저로 사용하는 방법이다.
countdown에는 down이 들어가있으며, c는 countdown으로 할당되기 때문에
c에도 down이 들어가게 된다.
정답 입력시 문제와 비교하여보자 def 필요없는 코드1 줄이 추가되어 계속 오류가 났었다.
※ 실제 코딩 도장의 해법과 다를 수 있으며, 답은 여러가지가 존재합니다.
코드 지적 정말 감사히 받겠습니다.
728x90'코딩도장 심사문제모음' 카테고리의 다른 글
34.6 심사문제: 게임 캐릭터 클래스 만들기 (0) 2020.11.08 34.5 연습문제: 게임 캐릭터 클래스 만들기 (0) 2020.11.08 33.5 연습문제: 호출 횟수를 세는 함수 만들기 (0) 2020.11.06 32.5 심사문제: 파일 이름을 한꺼번에 바꾸기 (0) 2020.11.06 32.4 연습문제: 이미지 파일만 가져오기 (0) 2020.11.05