프로그래밍/파이썬(Python)

코드카데미 파이썬(Codecademy Python) 강좌 - 계승 또는 팩토리얼(factorial)

&+&& 2015. 11. 15. 07:00

  안녕하세요. 춘삼이의 블로그입니다.

  코드카데미 파이썬(Codecademy Python) 강좌 해설 4번째 시간입니다. 이번 문제는 반복문 챕터의 [연습이 최고를 만든다]에 4번째 문제 [계승 또는 팩토리얼(factorial)] 입니다.

  정수 x를 입력값으로 하는 함수 factorial을 만들고 정수 x의 팩토리얼을 구하여 결과값을 반환하도록 구현하면 됩니다. 팩토리얼은 1부터 시작해서 정수 x까지의 모든 정수를 곱한 값입니다.

  일단 완성된 코드는 아래와 같구요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
def factorial(x):              # x를 입력값으로 갖는 factorial 함수 생성
    if x >= 1:  # x가 1이상일 경우에 명령을 실행
        total = x # 결과값 total에 초기값 x 할당
        y = x - 1 # 순차적으로 감소하는 값인 y에는 x-1 할당
        for i in range(x-1):  # 0부터 x-1의 횟수만큼 반복
            total = total * y # total값과 y를 곱하여 total에 할당
            y -= 1 # y의 값을 감소
        return total # 연산이 끝난 결과값 total을 반납
    else:
        return x
 
x=raw_input("Enter Number : "# 인자 x의 값을 사용자로부터 입력
 
print factorial(int(x)) # factorial을 호출하고 결과값을 출력
cs

  - 12열 이하로는 없어도 문제는 패스입니다. 

  - 12열 : raw_input은 콘솔상에 질의하고자 하는 문자열을 출력하고 사용자 입력값을 반환하는 함수입니다.

  - 2열 : n이 1 이상일 경우에만 처리하기 위하여 n >= 1 인 조건문을 설정합니다.

  - 3열 : 곱셈연산이기 때문에 결과값 total을 x값으로 초기화합니다.

  - 4열 : 순차적으로 감소하는 값을 담을 변수 y에는 x-1을 할당합니다.

  - 5열 : 0부터 x-1의 횟수만큼까지 반복합니다.

  - 6열 : total값과 y의 값을 곱하여 total에 할당합니다.

  - 7열 : 연산이 끝난 y값을 1만큼 감소시킵니다.

  - 8열 : for 반복문 종료 후 연산이 종료된 total값을 반환합니다.




  지난번 문제 보다 이번 문제가 더 쉬운 듯 합니다.

  덧셈은 보통 total값을 0으로 초기화한 후 작은 값부터 더하는 연산으로 진행이 되는 경우가 많은데요. 이건 곱셈 연산이기 때문에 그냥 최대값을 할당하고 곱하는 값이 감소하는 식으로 연산을 진행했습니다.