Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 숫자 n을 입력받아 1+2+…+n 수열의 합을 출력하는 프로그램

개요

주어진 범위 안의 자연수 합계를 구해 화면에 출력해야 하는 경우가 자주 있습니다. 이럴 때는 반복문으로 숫자를 하나씩 순회하며 합계를 누적한 뒤, 그 결과를 반환하는 함수를 정의하면 깔끔하게 해결할 수 있습니다.

아래는 그 구현 예시입니다.

예제 코드

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

공식 기반 방식은 반복 없이 한 번의 연산으로 결과를 얻을 수 있어 다루는 수가 클수록 그 장점이 커집니다.