파이썬 1부터 n까지 더하기 while - paisseon 1buteo nkkaji deohagi while

1. 반복문(loop)

 : 반복문은 특정 코드를 반복해서 수행할 경우에 사용한다. while문과 for문이 반복문에 속한다.

1-2. while문 

 : while문은 조건문이 True(참)이면 코드를 반복해서 수행한다. while문 안에는 조건문이 중첩해서 사용될 수 있다.

while 조건문:
	#조건문이 True이면 아래의 내용들이 실행된다!
    수행할 문장1
    수행할 문장2
    수행할 문장3
    ....

2. while문을 사용한 간단한 예제

  • 1-100에서 짝수만 출력하기
#2-1. while문을 사용해서 짝수 출력(1-100)
i = 0
while i <= 100:
    i += 2
    print(i)
  • if문을 같이 사용하여 1-100에서 짝수만 출력하기
#2-2. if문을 사용해서 짝수 출력
i = 0
while i <= 100:
    i += 1
    if i%2 == 0:
        print(i)
  • 1-100까지의 합 구하기
#2-3. 1 - 100 까지 합
i = 1
total = 0
while i<=100:
    total = total + i
    i += 1

print('총합 : ', total)
 
 
#반복문 없이 식으로만 사용하기
# 1 ~ n까지의 합은 n*(n+1) / 2 식을 사용한다.
print(100*(100+1)/2)
  • 1-100에서 짝수들의 합 구하기
#2-4. 1 - 100 에서 짝수들의 합
i = 0
total = 0
while i<=100:
    total = total + i
    i = i + 2
print('짝수 총합', total)

3. 복잡한 제어문

  • while문 안에 if문을 혹은 if문 안에 while문을 중첩해서 작성할 수 있다
  • 아래의 프로그램은 두 숫자(n, m)을 입력을 받아 n ~ m 까지의 합을 구한다. 
#3. n,m까지의 합 (단, n >=0 ,m >= 0 이어야함)
n = int(input('n값을 입력하시오.'))
m = int(input('m값을 입력하시오.'))

if n < 0 or m < 0:
    print('n과 m은 양수여야 합니다.')
else: # 이 때 n과 m 중에 어떤 값이 큰지 알 수가 없기 때문에 3가지 경우의 수를 구한다.
    if n == m:
        print(n)
    elif n < m:
        total = 0
        while n <= m:
            total = total + n
            n += 1
        print(total)
    else: # m < n
        total = 0
        while m <= n:
            total = total + m
            m += 1
        print(total)
  • 리스트를 사용한 n ~ m 까지의 합을 구하기
#3-1. 리스트를 사용한 방법
lst = [0, 0] #리스트 안에 값(요소)들이 있어야 인덱싱 가능
lst[0] = int(input('n값을 입력하시오.'))
lst[1] = int(input('m값을 입력하시오.'))


# 2, 5
# 2, 2
# 5, 2
lst.sort() #오름차순으로 정렬 => 2(lst[0]), 5(lst[1])

total = 0
while lst[0] <= lst[1]: # 2 <= 5
    total = total + lst[0]
    lst[0] += 1 # 2, 3, 4, 5

print(total)

1부터 n까지 정수합을 구하는 알고리즘 

구하는 값은 n = 2일 경우 1+2 , n = 3일 경우 1+2+3가 정답이다.

while문 활용

# include <stdio.h>

int main()
{
    int i=1,n;
    int sum = 0;
    printf("1부터 n까지의 합을 구합니다 . n을 입력하세요 : ");
    scanf("%d",&n);

    while(i<=n)
    {
        sum +=i;
        i++;
    }

    printf("1부터 n까지의 합계는? : %d 입니다. ",sum);

    return 0;
}

while문은 어떤 조건이 성립하는 동안 처리를 반복해 실행하는 반복구조이며, 일반적으로 루프(loop)라고 부른다. 이때 while문은 실행 전에 반복을 계속할지를 판단하는데, 이런 구조를 '사전 판단 반복 구조'라고 부른다. 제어식의 평가값이 0이 아니면 프로그램 명령문이 반복된다.

for문 활용

int main()
{
    int i,n,sum = 0;
    printf("1부터 n까지의 합을 구합니다. n을 입력하세요 : ");
    scanf("%d",&n);

    for(i = 1; i<=n; i++)
    {
        sum +=i;
    }

    printf("1부터 n까지의 합은 : %d 입니다.",sum);

    return 0;
}

파이썬 1부터 n까지 더하기 while - paisseon 1buteo nkkaji deohagi while

【파이선 배우기】

1. for 문

2. while 문

3. 기타 제어문

앞서 숫자형 데이터를 공부하면서 황금알을 낳는 거위에 대해 이야기한 적이 있다. 황금알의 수를 세기 위해서 같은 계산을 계속해서 반복해주어야 하는데, 같은 것을 계속 반복하는 것만큼 지루한 일은 없다. 프로그래밍을 할 때도 같은 과정을 계속해서 코딩한다면 상당히 지루한 작업이 될 것이다. 이러한 경우에 사용되는 것이 반복문이다.

반복문은 지정한 횟수만큼 또는 무한으로 코드를 반복하게 만들어준다. 반복문을 사용하면 사람이 계산하기에는 많은 시간이 소요되는 일도 빠르게 처리할 수 있다. 반복문의 종류는 크게 for 문, while 문 두 가지로 나눌 수 있다. 반복문을 사용하기 위해서는 반복되는 것이 무엇이고, 어떤 규칙을 가지고 반복되는지 파악해야 한다. 다음 그림에서 반복되는 것은 무엇이고, 어떤 규칙을 가지고 반복되고 있을까?

파이썬 1부터 n까지 더하기 while - paisseon 1buteo nkkaji deohagi while

1for 문

가. for 문 알아보기

주로 사용하는 for 문의 형식은 다음과 같다.

for 변수 in range(시작값, 끝값+1, 증가값):

    반복되는 부분

range 함수는 지정된 범위의 값을 반환한다. 1부터 10까지 수의 합을 for 문을 이용해 구한다면 다음과 같다.

파이썬 1부터 n까지 더하기 while - paisseon 1buteo nkkaji deohagi while

i=0

sum=0

for i in range(1, 11, 1):

    sum=sum+i

print("1에서 10까지 자연수의 합은: %d" % sum)

파이썬 1부터 n까지 더하기 while - paisseon 1buteo nkkaji deohagi while

>5for1.py

1에서 10까지 자연수의 합은: 55

1행과 2행에서는 i와 sum을 0으로 정했다. 그리고 4행과 5행이 반복된다. 처음에는 i 값 1을 현재 sum의 값인 0과 더해 다시 sum에 대입한다. 두 번째 반복될 때에는 i 값 2를 현재 sum 값인 1과 더해 다시 sum에 대입한다. 0+1=1, 1+2=3, 3+3=6, 6+4=10과 같은 과정이 10번 반복되면 1에서 10까지 더한 값이 sum에 들어가게 된다. 1부터 10까지 수의 합은 단순히 덧셈을 통해 계산하더라도 많은 시간이 걸리지는 않는다. 하지만 만약 1부터 10,000까지 수의 합을 구한다고 할 때, 이것을 일일이 계산하기에는 너무 많은 시간이 소요된다. 이것이 반복문을 사용하는 가장 큰 이유이다.

나. 코딩해 보기

1) for 문을 사용해서 1부터 10까지 자연수 중 홀수의 합을 구할 수 있도록 코딩해 보자.

i=0

sum=0

for i in range(1, 11, 2):

    sum=sum+i

print("1에서 10까지 자연수 중 홀수의 합은: %d" % sum)

2) 정수형 변수 a를 입력받고 for 문을 사용해서 1부터 입력한 수까지의 합을 구할 수 있도록 코딩해 보자.

i=0

sum=0

a=int(input("정수를 입력해 주세요.:"))

for i in range(1, a+1, 1):

     sum=sum+i

print("1에서 %d까지 자연수의 합은: %d" % (a, sum))

2while 문

가. while 문 알아보기

for 문은 반복할 횟수를 range()에서 정한 다음 그 횟수만큼 반복했지만, while 문은 조건식이 참이면 명령을 수행한다. 참인 경우 실행하는 명령이 끝나는 곳에서 다시 조건식으로 돌아와 실행을 반복하는 형식을 취한다. 따라서 for 문이 range() 안의 범위가 지정된 만큼 반복이 이루어진 반면 while 문에서는 시작 값과 끝 값이 없으므로 같은 역할을 하는 문장을 다른 위치에 넣어 사용한다. 주로 사용하는 while 문의 형태는 다음과 같다.

변수=시작값

while 변숫값<끝값:

    반복되는 부분

    변수=변수+증가값

앞서 공부했던 1부터 10까지 수의 합을 while 문으로 구현하면 다음과 같다.

파이썬 1부터 n까지 더하기 while - paisseon 1buteo nkkaji deohagi while

i=0

sum=0

i=1

while i<11:

    sum=sum+i

    i=i+1

print("1에서 10까지 자연수의 합은: %d" % sum)

파이썬 1부터 n까지 더하기 while - paisseon 1buteo nkkaji deohagi while

>5while1.py

1에서 10까지 자연수의 합은: 55

1행과 2행에서 변수 i와 sum의 초깃값을 0으로 정한다. 4행에서 i를 1로 지정했다. 5행에서 i가 11보다 작으면 참이므로, i가 10일 때까지 6, 7행이 반복된다. 결국 sum은 1+2+3+…+10의 값이 되므로 55라는 결과가 나온다.

나. 무한 반복 while 문

while 문에서 무한 반복을 사용할 수 있는데, 무한 반복을 적용하려면 while 조건식을 True로 지정하면 된다. 다음은 간단한 무한 반복 while 문이다. 무한 반복을 중지하려면 컨트롤+c 버튼을 눌러주면 된다.

파이썬 1부터 n까지 더하기 while - paisseon 1buteo nkkaji deohagi while

sum=0

a, b=0, 0

while True:

    a=int(input("첫 번째 수를 입력해주세요.:"))

    b=int(input("두 번째 수를 입력해주세요.:"))

    sum=a+b

    print("%d+%d=%d" % (a, b, sum))

파이썬 1부터 n까지 더하기 while - paisseon 1buteo nkkaji deohagi while

>5while2.py

첫 번째 수를 입력해주세요.:1

두 번째 수를 입력해주세요.:2

1+2=3

첫 번째 수를 입력해주세요.:3

두 번째 수를 입력해주세요.:4

3+4=7

(계속 반복)

while의 조건식을 True로 하면 무한 반복을 사용할 수 있다. 이 프로그램을 실행하면 4행의 무한 반복문 때문에 5~8행이 무한 반복되는 것을 확인할 수 있다.

3기타 제어문

가. break 문

break 문은 반복문에서 자주 사용된다. for 문은 range() 함수에서 지정한 범위를 벗어나면 종료되며, while 문은 조건식이 False가 되거나 무한 반복의 경우 컨트롤+c를 누르면 프로그램이 종료되었다. 이 외에도 break 문을 사용하면 반복문을 빠져나갈 수 있다. 다음은 break 문이 사용되어 반복문을 벗어나는 예이다.

파이썬 1부터 n까지 더하기 while - paisseon 1buteo nkkaji deohagi while

sum=0

a,b=0,0

while True:

    a=int(input("첫 번째 수를 입력해주세요.:"))

    b=int(input("두 번째 수를 입력해주세요.:"))

    sum=a+b

    if sum>100:

        break

    print("%d+%d=%d" % (a,b,sum))

파이썬 1부터 n까지 더하기 while - paisseon 1buteo nkkaji deohagi while

>5break1.py

첫 번째 수를 입력해주세요.:1

두 번째 수를 입력해주세요.:2

1+2=3

첫 번째 수를 입력해주세요.:1

두 번째 수를 입력해주세요.:100

>>>

앞서 공부했던 a와 b의 값을 입력받아 합을 구하는 무한 반복문이다. 하지만 8행의 조건을 만족하는 경우 즉, 두 수의 합이 100보다 크다면 break가 실행되어 while 문을 탈출하게 된다.

나. continue 문

continue 문을 만나면 남은 명령에 관계없이 다시 반복문의 처음으로 돌아간다. 다음은 continue 문이 사용된 예이다.

파이썬 1부터 n까지 더하기 while - paisseon 1buteo nkkaji deohagi while

i=0

sum=0

for i in range(1, 11, 1):

    if i%2==0:

        continue

    sum=sum+i

print("1에서 10까지 자연수 중 홀수의 합은: %d" % sum)

파이썬 1부터 n까지 더하기 while - paisseon 1buteo nkkaji deohagi while

>5continue1.py

1에서 10까지 자연수 중 홀수의 합은: 25

앞서 공부했던 1부터 10까지 자연수의 합을 구하는 식에서 1부터 10까지 자연수 중 홀수의 합을 구하는 프로그램이다. i가 2로 나누어떨어질 경우, 즉 짝수인 경우에는 continue 문을 만나서 변수 sum은 더해지지 않고, i에만 1을 더한 후 다시 조건 4행의 반복문으로 돌아가게 된다.

다. 코딩해 보기

1) 1부터 10까지 더하는 프로그램에서 합이 10 이상이 될 경우 얼마까지 더했는지 확인하는 프로그램을 break 문을 사용해 코딩해 보자.

i=0

sum=0

for i in range(1, 11, 1):

    sum=sum+i

    if sum>=10:

        break

print("1에서 10까지 더할 때 합이 10 이상이 되는 경우는 %d까지 더했을 때입니다." % i)

2) 5의 배수를 제외한 1부터 100까지의 수를 더하는 프로그램을 continue 문을 사용해 코딩해 보자.

i=0

sum=0

for i in range(1, 101, 1):

    if i%5==0:

        continue

    sum=sum+i

print("5의 배수를 제외한 1부터 100까지의 수의 합은 %d입니다." % sum)