시리즈 이전글입니다.
2021/01/26 - [파이썬/주식 자동매매] - Python 키움API 자동매매프로그램 개발-14.Python 기초편 반복문(1) for 사용
for를 이용한 반복문은 range, tuple, list, dictionary 등을 바탕으로 이 안에 있는 데이터의 길이만큼 반복문을 진행했습니다. while은 이와 다르게 다음과 같은 문법으로 사용됩니다.
while 조건:
반복할 코드
여기서 ‘조건’은 조건문에서 사용했던 조건과 마찬가지로 참, 거짓을 구분할 수 있으면 됩니다. 예를 들어보겠습니다.
i = 1
while i < 10:
print(i)
i를 1로 만들고 while문 조건을 보면 i가 10보다 작은 경우에 반복을 실행하라고 합니다.
i는 10보다 작으니 print(i)라는 코드가 동작할 것이라고 예상해볼 수 있습니다.
그럼 이 코드를 실행해보겠습니다.
1
1
1
1
1
1
....
실행해보셨는지 모르겠지만 실행하면 1이 무한히 나옵니다. 이 경우 자동으로 중지되지 않으니 Pycharm내에서 상단에 빨간색 종료 버튼을 눌러 수동으로 종료시켜야 합니다.
출력이 무한히 반복되는 이유는 i < 10이라는 조건이 만족되는 동안에는 반복문이 계속 수행되기 때문입니다. for를 이용한 반복문은 반복되는 객체(range, tuple 등)에 들어있는 값을 알아서 꺼내 마지막까지 도달하면 종료되었지만 while문은 종료될 수 있는 조건을 반복 코드 안에서 작성해줘야 합니다. 그렇지 않다면 한번 진입한 조건문을 빠져 나갈 수가 없어 이처럼 무한히 반복되게 됩니다.
그러면 반복문을 빠져나올 수 있도록 코드를 조금 수정해보겠습니다.
i = 1
while i < 10:
print(i)
i = i + 1
이 경우 반복문이 한번 실행될 때마다 i값이 증가하기 때문에
i가 1씩 증가하다 10에 도달하면 조건에 해당하지 않아서 반복문이 동작하지 않습니다.
1
2
3
4
5
6
7
8
9
while문의 동작 프로세스를 정리하면 이렇습니다.
그림에 나온 (1), (2), (3), (4) 순서대로 설명을 봐주시기 바랍니다.
먼저 while문을 만나면 실행 조건에 부합하는지 확인합니다.
i의 초기값은 1이니 i<10을 만족해 반복코드가 실행됩니다.
이후에는 다시 while문의 조건에 부합하는지 확인합니다.
그렇게 반복하다가 더이상 조건에 부합하지 않으면 while문을 빠져 나오게 되는 것입니다.
위 코드에서는 i가 1에서 시작해 하나씩 증가하다 10이 되기 전까지 실행되기에 1부터 9까지의 숫자가 출력됩니다.
따라서 반복문을 원하는만큼만 수행하기 위해서는 while의 조건설정이 중요하며
코드가 반복되어도 조건문을 빠져나올 수 없게 되는 경우를 무한 루프(Infinite Loop)에 빠졌다고 말합니다.
while True:
print("무한 루프입니다.")
while 1:
print("무한 루프.. 못 나갑니다.")
while 1의 경우도 항상 실행되게 되는데 그 이유는 조건문을 배울 때 다음처럼 조건을 만들면 항상 실행되는 것과 마찬가지기 때문입니다.
if 1:
print("조건이 꼭 True가 아니라 값이 있어도 실행됩니다.")
조건을 잘못 설정해 의도하지 않은 무한 루프에 빠지게 되면 발생하는 제일 큰 문제는
반복문 밑에 존재하는 코드는 아예 실행되지 않는 죽은 영역이 되어 버리니 사용에 주의하시기 바랍니다.
while 1:
print("무한 루프.. 못 나갑니다.")
# 절대 실행되지 않는 영역
….
지금까지 for와 while을 이용한 반복문 사용을 알아보았습니다.
반복문을 만들고자할 때 어느 것을 이용하던 상관없지만 굳이 구분하자면
for문은 반복가능한 객체를 이용하므로 반복횟수가 명확히 정해져있는 경우 사용합니다.
반대로 while은 조건을 이용하기 때문에 반복하다 보면 분명히 종료조건에 도달하는 순간이 와야 합니다. 이 둘의 미묘한 차이를 잘 알고 적절한 반복문을 사용할 줄 아는 것이 중요합니다.
같이 보시면 좋을 글
2021/02/10 - [파이썬/주식 자동매매] - 주식매매프로그램 개발 노하우, 소스를 담은 전자책이 발간되었습니다.
2021/01/27 - [파이썬/주식 자동매매] - Python 키움API 자동매매프로그램 개발-16.Python 기초편 반복문(3) 중첩 반복문
'파이썬 > 주식 자동매매' 카테고리의 다른 글
Python 키움API 자동매매프로그램 개발-17.Python 기초편 반복문(4) 반복문 제어 (0) | 2021.01.28 |
---|---|
Python 키움API 자동매매프로그램 개발-16.Python 기초편 반복문(3) 중첩 반복문 (0) | 2021.01.27 |
Python 키움API 자동매매프로그램 개발-14.Python 기초편 반복문(1) for 사용 (0) | 2021.01.26 |
Python 키움API 자동매매프로그램 개발-13.Python 기초편 조건문(2) (1) | 2021.01.26 |
Python 키움API 자동매매프로그램 개발-12.Python 기초편 조건문(1) (0) | 2021.01.25 |
댓글