Introduction

  • for, if, while 문을 흐름 제어문 이라 한다.
  • for 문은 원하는 <collection>의 갯수만큼 반복한다면, while 문if 문 처럼 조건을 만족할 때까지 계속 반복한다.
  • While문if문 처럼 조건이 들어간다. 그런데, 무한 반복될 수도 있기 때문에, 조건의 변화 가 필요하다. 아니면 break 를 사용한다.
    • 조건을 만족하면 while문 을 빠져나온다.
    • python 공식 사이트에서 while 의 구조는 다음과 같다.
    • [expr]은 expression을 의미한다.
1
2
> while [expr]:
> [statement(s)]

 


1. While 기본 사용법

  • whlie 문은 무한 반복문 이 되지 않도록, 조건의 변화 를 일으키는 코드 를 넣어야 한다.
  • 그래서 while문의 경우, 눈으로 중간 결과를 디버깅해서 무한 반복문 인지 확인한다.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 예제 1
> m = 3
> while m > 0:
>   print(m)
# 여기까지 쓰면 계속해서 m > 0 이므로 `무한 반복문`이 된다.
>   m -= 1
3
2
1

# 예제 2
> z = ['foo', 'bar', 'baz']
> whlie z:
# z 변수 안에 데이터가 존재하므로 True 상태이기 때문에 무한 반복문이다.
# 위험한 코드이므로, 조건의 변화를 일으켜 무한 반복문을 방지한다.
>   print(z.pop())
# pop으로 성분의 갯수가 0이 되면 False가 되므로 중단된다.

 


2. Break, continue

  • 조건의 변화 를 일으키면서, 원하는 조건에서 중단하거나, 조건 판단문으로 되돌아가기 위해서 breakcontinue를 사용한다.
  • break 문과 continue문은 while문 과 자주 사용된다.
  • 중간에 if 조건문이 껴져 있는 방식이 많다.
 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
37
38
39
40
# 예제 3
> m = 5
> while m > 0:
>     m -= 1
>    if m == 2:
>         break
>     print(m)
> print('Loop Ended')
4
3
Loop Ended

# 예제 4
> m = 5
> while m > 0:
>     m -= 1
>    if m == 2:
# 위에서 break를 continue로 바꿨다.
>         continue
>     print(m)
> print('Loop Ended')
4
3
1
0
Loop Ended

# 예제 5
> i = 1
> while i <= 10:
>     print('i : ', i)
>     if i ==6:
>         break
>     i += 1
i : 1
i : 2
i : 3
i : 4
i : 5
i : 6

❗ pass에 대해 설명하자면 다른 언어의 경우 빈 줄로 넘겨도 Error가 나지 않지만, 파이썬은 Error가 나기 때문에 나중에 작성하고자 빈란으로 남기면 안된다. 그럴 때 파이썬은 pass를 사용한다.

 


3. While ~ else 구문

 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
# 예제 6
> n = 5
> while n > 0:
>    print(n)
>     n -= 1
>     if n == 3:
>       break
> else:
>    print('else out.')
5
4

# 예제 7
> g = ['red', 'blue', 'white', 'black']
> c = 'black'
> i = 0

> while i < len(g):
>     if g[i] == c:
>         print('find {}'.format(c))
>         break
>     i += 1
> else:
>     print('not found in lise.')
find black

 


4. 무한 반복 구문

  • 무한정 반복되는 구문을 말한다.
  • 이 구문이 실행되면 다운되므로, breakcontinue로 방지한다.
  • 무한 반복문의 한 예가 다음과 같다.
1
2
> while True:
>   print('Foo')
  • 무한 반복문을 방지하기 위해 다음과 같이 수정한다.
1
2
3
4
5
6
7
8
> a = ['foo', 'bar', 'baz']
> while True:
>   if not a:
>       break
>   print(a.pop())
baz
bar
foo
  • a의 원소가 존재하지 않으므로 if not a가 참이 되어 break가 실행된다.

 


Reference