본문 바로가기
파이썬/주식 자동매매

Python 키움API 자동매매프로그램 개발-15.Python 기초편 반복문(2) while 사용

by 행복론자 2021. 1. 27.

시리즈 이전글입니다.

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 - [파이썬/주식 자동매매] - 주식매매프로그램 개발 노하우, 소스를 담은 전자책이 발간되었습니다.

 

주식매매프로그램 개발 노하우, 소스를 담은 전자책이 발간되었습니다.

주식매매프로그램 개발 노하우에 관한 제 전자책이 발간되었습니다. https://kmong.com/gig/292764 주식매매프로그램, 쉽게 따라 만드는 노하우와 소스를 드립니다. | 36000원부터 시작 가능한 총 평 0개

jsp-dev.tistory.com

 

2021/01/27 - [파이썬/주식 자동매매] - Python 키움API 자동매매프로그램 개발-16.Python 기초편 반복문(3) 중첩 반복문

반응형
이 포스팅은 쿠팡파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

댓글