개요
주어진 범위 안의 자연수 합계를 구해 화면에 출력해야 하는 경우가 자주 있습니다. 이럴 때는 반복문으로 숫자를 하나씩 순회하며 합계를 누적한 뒤, 그 결과를 반환하는 함수를 정의하면 깔끔하게 해결할 수 있습니다.
아래는 그 구현 예시입니다.
예제 코드
def sum_natural_nums(val):
my_sum = 0
for i in range(1, val + 1):
my_sum += i * (i + 1) / 2
return my_sum
val = 9
print("The value is ")
print(val)
print("The sum of natural numbers upto 9 is : ")
print(sum_natural_nums(val))
실행 결과
The value is 9 The sum of natural numbers upto 9 is : 165.0
코드 설명
sum_natural_nums라는 이름의 함수를 정의하고, 숫자 하나를 매개변수로 받습니다.합계를 저장할 변수
my_sum을 0으로 초기화합니다.range(1, val + 1)을 사용해 1부터 입력값까지 반복문을 실행합니다.반복할 때마다
i * (i + 1) / 2값을 합계에 더합니다. 이 식은 1부터 i까지의 합(삼각수)을 뜻하므로, 최종 결과는 삼각수들의 누적 합이 됩니다.반복이 끝나면 계산된 합계를 반환합니다.
합을 구할 값(예제에서는 9)을 변수에 저장합니다.
그 값을 인자로 넘겨 함수를 호출합니다.
결과가 콘솔에 출력되며, n이 9일 때 165.0이 됩니다.
더 간단한 대체 방법
단순히 1부터 n까지의 합만 필요하다면 내장 함수 sum()과 range()를 조합하거나 등차수열 공식을 사용하는 편이 훨씬 효율적입니다.
# 방법 1 : 내장 함수 sum() 사용 n = 9 print(sum(range(1, n + 1))) # 45 # 방법 2 : 공식 n * (n + 1) // 2 사용 print(n * (n + 1) // 2) # 45
공식 기반 방식은 반복 없이 한 번의 연산으로 결과를 얻을 수 있어 다루는 수가 클수록 그 장점이 커집니다.