Python의 경우, loop structure로 while
statement와 for
statement를 제공한다.
Contol Flow와 Control Structure에 대한 개념은 다음 URL을 참고 :
http://ds31x.blogspot.com/2023/07/basic-control-structures-and-control.html
참고로 do-while
statement 는 while
statement 만으로도 구현가능하기 때문에 Python에선 지원하지 않음.
for
statement가 iterator
object와 함께 사용되는 것과 달리,
while
statement는 if
statement와 매우 유사한 구조로 repetition을 가능하게 함.
일반적인 구조.
while condition:
while_block
while
statement는while
keyword로 시작하고, 뒤에 놓이는condition
expression이True
로 reduction되는 경우엔while_block
이 수행된다.while_block
이 수행되고 나서 다시condition
expression이 evaluation되고 그 결괏값이True
이면 다시while_block
이 수행된다.- 이는
condition
expression이 계속True
인 경우 계속해서 반복이 이루어짐. - 만약
condition
expression이False
인 경우엔while_block
이 수행되지 않고while
statement가 끝나게 된다.
위의 설명에서 알 수 있듯이, condition
expression이 True
가 유지되는 한 계속 반복이 이루어지나,
처음부터 False
인 경우엔 아예 수행이 안된다.
예제0
다음은 while
statement의 간단한 예이다.
4번 반복이 되어 1부터 4까지 integer가 출력된다.
a = 1
while a <5:
print(a)
a += 1
- while statement의 code block에서 마지막 line에 있는 augmented assignment "a += 1" 이 주석 처리할 경우, 무한루프에 빠짐.
break
를 이용하여 다른 언어의 do-while
구현하기.
다른 프로그래밍 언어에서 제공하는 do-while
과 같이 맨 처음은 무조건 수행되고 이후 반복할지를 condition
exression의 결괏값으로 정하려면, break
keyword를 이용해야 한다.
break
가 수행될 경우, 현재의 block에서 탈출하여 한단계 위의 block으로 이동한다. while
statement의 code block에서 break
가 호출되면 while
statement의 code block에서 나와서 다음 line의 statement를 수행하게 되기 때문에 실제적으로 while
statement가 종료되게 된다.
이 break
와 if
statement와 while
statement를 다음과 같이 조합하면 do-while
과 같이 동작가능해진다.
while True: # condition expression이 True literal이 되면, 무한루프임.
while_block_start
...
if not condition:
break
while_block_end
condition
expression이while
code block의 끝에 놓인if
statement에 위치함.- 만약
condition
이 처음부터False
였다고 해도while_block
이 한번은 수행되고, 끝의if
statement의 code block에 있는break
statement에 의해while
statement가 종료되게 된다. condition
expression이True
로 reduction된다면,while
statement의 조건에 대한 evaluation이 이루어지고,True
literal로 고정된 상태이므로 다시while
statement의 code block이 수행되게 된다.
예제1
다음은 break
를 사용한 while
statement의 예이다.
매 반복마다 종료여부를 물어보고 y
가 입력되면 종료된다.
cnt = 0
while True:
cnt += 1
print('iteration #:',cnt)
ans = input('Do you want ot quit?[y/n]: ').lower()
if ans == 'y':
break
print('done!')
continue statement
break
와 함께 loop를 제어하는 statement가 continue
이다.
수행될 때 즉시 자신을 둘러 싸고 있는 repetition loop를 종료시키는 break
statement와 달리
continue
statement는 repetition loop를 종료시키지는 않지만 수행되면 현재 block의 나머지 부분을 수행하지 않고 repetition의 다음 반복을 수행하게 된다.
while
statement의 예를 든다면, continue
가 호출될 경우
해당 line 아래에 위치한 while
statement의 code들의 수행을 생략하고 while
statement의 첫번째 line의 condition
expression을 evaluation하게 된다.
예제2
다음은 continue
의 활용 예제로, string s
에서 alphabet이 몇개인지를 count하는 while
statement임.
s = 'a1b2b3c3'
cnt = 0
idx = 0
while True:
if idx >= len(s):
break
if not s[idx].isalpha():
idx += 1
continue
idx +=1
cnt += 1
print ('# of alphabets:', cnt)
- string은 immutable sequence type이며 iterable임을 잊지 말것.
더 읽어보면 좋은 자료
https://gist.github.com/dsaint31x/5297428fc4b701393d94f4348d89a0f9
'Python' 카테고리의 다른 글
[Python] PEP 8 : Style Guide for Python Code (0) | 2023.08.04 |
---|---|
[Python] asterisk * 사용하기 : unpacking, packing (0) | 2023.07.30 |
[Python] if, elif, else statements (0) | 2023.07.28 |
[Python] Boolean Operators, Relational Operators, and Membership Operator (0) | 2023.07.28 |
[Python] List's methods (0) | 2023.07.17 |