<개인공부>/[Python]

[python] 파이썬 while문(반복문) 정리 및 예제

BlockDMask 2020. 9. 13. 00:20
반응형

안녕하세요. BlockDMask 입니다.
오늘은 파이썬 반복문 중 while에 대해서 알아보려고 합니다.
파이썬에는 반복문이 for와 while이 존재합니다. 이번시간에는 while에 대해서 알아볼것이고, 반복문 for문이 궁금하신분은 아래 링크로 들어가시면 됩니다.
[반복문 for 바로가기]
네 그럼 이번 포스팅 시작해보겠습니다.

<목차>
1. 반복문이란?
2. while문의 구조와 기본 사용방법
3. while 에서의 break, continue
4. while문 예제



1. 반복문에 대해서


▶ 반복문은 언제 사용하는 것일까?
for 문 설명부에서 사용했던 예제와는 다른 예제를 사용해볼게요.
우리가 초중고등학교에서 수학문제를 풀때 생각해 볼까요? 아니면 계산기를 이용했을때를 생각해 봅시다.
1부터 10까지 더할때... 1부터 100까지 더해야 하는 경우가 있을때, 우리는 무척이나 귀찮아 하면서 노트에 하나씩 적으면서 더했습니다. 지금이야 스마트 폰이 있으니 계산기를 이용해서 더했을 수도 있죠. 
설사 계산기가 있다해도 1 + 2 + 3 + 4 ... + 8 + 9 + 10 을 버튼 하나하나 쳐야한다는 사실은 변하지 않습니다.
자 이렇게 단순하고 반복적인 일을 일일히 하나하나 하는것을 일정한 규칙에 따라서 셋트로 묶어 주기만 하면 컴퓨터가 알아서 결과를 내준다는 사실! 알고 계셨나요?
반복문을 이용하면 매우 간편해집니다.

예제가 적절했나요? 적절하지 않은것 같기도 하지만, 이해는 좀 가셨을 겁니다.
1부터 10까지를 더한다고 했을때 이걸 코드로 나타내면 아래와 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 반복문이 없었다면 하나하나 작성해야겠죠.
result1 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
 
print('반복문 미사용 : {0}'.format(result1))
 
 
# while 반복문을 사용하면
= 0
result2 = 0
while i < 10:
    i = i + 1
    result2 += i
 
 
print('반복문 사용 : {0}'.format(result2))
cs

이렇게 반복문이 없으면 우리는 1부터 10까지 더해주는 코드를 짜야합니다.
하지만 반복문이 있으면 단순히 컴퓨터한테 "1~10까지 더해라 컴퓨터 일해라 컴퓨터"라고 하면서 손쉽게 우리가 원하는 값을 얻을 수 있습니다.
이렇게 반복문이 있으면 정말 모든게 편해집니다. 정말 극단적으로 이야기를 하자면 1부터 1000까지, 아니 1만 까지 더해야하는 상황이 온다면 반복문은 더더욱 필요해지겠죠?



2. 파이썬 while 기본 사용 방법


▶ while문의 기본 구조

while [조건문]:
    [수행부분]

이런식으로 구성이 되어있습니다.

-> while 반복문은 [조건문]이 참(True)인 경우 내부의 수행 부분을 진행하고, [조건문]이 거짓(False)인 경우 while문을 빠져나니다.
-> while문의 조건문 끝에는 꼭 콜론 (:) 을 붙여 주셔야 합니다.
-> while 반복문의 [수행부분]은 들여쓰기를 통해 구분을 합니다.
while 보다 하나 들여쓰기 되어야 while문과 한묶음이라고 인식합니다.
-> while 반복문은 중첩해서 사용이 가능합니다.


▶ while문의 사용 방법

1부터 100까지 수 중에서 홀수만 더한다고 했을때 아래와 같이 while문을 사용할 수 있습니다.

1
2
3
4
5
6
7
= 0
result_even = 0
 
while i < 100:
    i = i + 1
    if i % 2 == 0:
        result_even = result_even + i
cs

이런식으로 while문을 사용하게 되면
i가 0부터 하나씩 더해지면서 99가 될때 까지는 while의 조건문이 True가 되어서 아래 수행부분을 수행하게 됩니다.
그러다가 i가 5번째 줄에서 1이 더해져서 100이되고 6,7번째 코드를 수행하고 다시 4번 라인으로 왔을때 while의 조건문이 False가 되면서 while문을 나오게 됩니다.
그럼 횟수로는 100회의 반복이 되고, i는 1~100까지의 값을 통해서 i % 2 == 0 이라는 구문을 통과하게 됩니다.
%기호는 어떤 수를 나누었을때의 나머지를 뜻합니다. i를 2로 나누었을때 나머지가 0이라는 것은 짝수를 나타내기 때문에 위 코드에서 사용한 것 입니다.
%의 기호를 더 자세히 알고 싶다면 [바로가기]


3. 파이썬 while break, continue


▶ while문의 break (아저씨 저 이번에 내려요. 브레이크 밟아주세요.)

while 반목문을 수행하다가 특정 조건을 만족하면 바로 while 반복문을 나오도록 하고 싶을때 사용하면됩니다.
break는 반복문 중간에 반복문을 탈출 하게 만들기 위해 사용합니다.
"아 몰라 브레이크 밟아 중간에 내릴래" 입니다.

모양을 살펴보면 이렇습니다.
while [조건문]:
    [수행부분1]
    [수행부분2]
    ...
    특정조건:
        break
    [수행부분3]
    ...

이렇게 중간에 특정 조건을 만족하면 break가 걸리게 만들 수 있으며, break가 걸리면 바로 그자리에서 반복문을 나오게 됩니다. 아래 뭐가있든 위에 뭐가 있든 다 무시하고 나옵니다. 아주 거친 키워드 입니다. 

while break 예제를 한번 볼까요. 이전에 봤던 1부터 100까지의 수 중에서 짝수만 더하는 코드에서, 짝수만 더하다가 더한 결과 값이 1000을 넘었을때 break가 걸리도록 하는 코드를 한번 짜 봤습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
= 0
result_even = 0
 
while i < 100:
    i = i + 1
    if i % 2 == 0:
        result_even = result_even + i
 
    if result_even > 1000:
        break
 
 
print(result_even)
cs

이렇게 되면 result_even이 1000이 넘는 1056이 되었을때 딱 반복문을 탈출하게 됩니다.
while 반복문에서는 이렇게 특정 조건을 걸어서 반복문을 중간에 탈 출 할 수 있습니다.


▶ while문의 continue (중간에 멈추고 처음으로 돌아가자)

while 반복문을 돌다가 특정 조건을 만족할때, 아래 코드는 무시하고 바로 반복문의 맨위로 올라가고 싶을때가 있을 수 있습니다.
즉 중간에서 바로 맨 처음으로 올라가는 기능을 하는, 키워드 continue 입니다.

while [조건문]:
    [수행부분1]
    [수행부분2]
    ...
    특정조건:
        continue
    [수행부분3]
    ...

만약에 특정조건을 만족하면 continue를 타게 되고, 바로 while [조건문]: 으로 올라가서 [조건문]이 True인지 False 인지 확인하고, True이면 다시 수행부분1~2 이렇게 수행하게 됩니다. [조건문]이 False이면 당연하게도 while 반복문을 나가게 되겠죠?
아래쪽 부분을 설명드리면,
continue를 타게 되면 continue 아래에 있는 코드 [수행부분3] ... 등등의 코드는 무시되고 바로 while [조건문]부터 돌게 됩니다. 예제로 한번 볼까요?

1 부터 100까지의 숫자 중에서 짝수만 더하는 코드를 조금 수정해 볼까요?
짝수만 더한다는것은 반대로 생각해보면 홀수인 경우를 더해주지 않는다는 뜻으로 받아 들일 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
result = 0
index = 0
 
while index < 100:
    index = index + 1
    if index % 2 == 1:
        continue
 
    result = result + index
 
print(result)
cs

그럼 위 코드 처럼 index % 2 == 1일떄 continue를 통해서 다시 while로 바로 올라갈 수 있습니다.


4. 파이썬 while문 예제


▶ 예제1) 1~100까지 짝수를 더하는 코드
같은 기능을 하는 코드 이어도 continue, break를 사용해서 다르게 표현이 가능함을 보여주는 예제입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 1번 방법
= 0
result1 = 0
while i < 100:
    i = i + 1
    if i % 2 == 0:
        result1 = result1 + i
 
print('1번 방법 : {0}'.format(result1))
 
# 2번 방법 (break 이용)
= 0
result2 = 0
while True:
    if j > 100:
        break
 
    j = j + 1
    if j % 2 == 0:
        result2 = result2 + j
 
 
print('2번 방법 (break) : {0}'.format(result2))
 
 
# 3번 방법 (continue 이용)
= 0
result3 = 0
while k < 100:
    k = k + 1
    if k % 2 != 0:
        continue
 
    result3 = result3 + k
 
print('3번 방법 (continue) : {0}'.format(result3))
cs

결과값


▶ 예제2) while 구구단 출력

구구단 4단과 5단을 출력하는 코드 입니다. 
반복문 while 문을 중첩하는 방법과  i 의 위치에 따른 i 초기값, 그리고 while 조건문이 다른 것을 한번씩 확인하고 넘어가시면 좋을것 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# while 중첩 + i를 뒤에 위치
= 4
while i < 6:
    j = 0
    while j < 9:
        j = j + 1
        print('{0} x {1} = {2}'.format(i, j, i * j))
 
    i = i + 1
 
 
# while 중첩 + i를 초반에 위치
= 3
while i < 5:
    i = i + 1
    j = 0
    while j < 9:
        j = j + 1
        print('{0} x {1} = {2}'.format(i, j, i * j))
cs

결과 값은 동일하게 구구단의 4단과 5단을 출력합니다.
i의 위치에 따라 i 의 초기값과 while [조건문]이 달라지는 것을 확인할 수 있습니다.


이상으로 파이썬 반복문 while에 대해서 알아보았습니다. 감사합니다. 

반응형