Python

주식 알고리즘 만들기 - 3. 제어문 (while 문, 중첩루프)

제이아이엔 2022. 10. 8. 23:47
반응형

2022.10.08 - [Python] - 주식 알고리즘 만들기 - 3. 제어문 ( for , while 문)

출처: 5) while 문 - 파이썬으로 배우는 알고리즘 트레이딩 (개정판-2쇄) (wikidocs.net)

 

주식 알고리즘 만들기 - 3. 제어문 ( for , while 문)

2022.10.08 - [Python] - 주식 알고리즘 만들기 - 3. 제어문 ( boolean, 논리 연산자 , if) 크다. < 작다..." data-og-host="jiain.tistory.com" data-og-source-url="https://jiain.tistory.com/23" data-og-url=..

jiain.tistory.com

#while문

앞서 우리는 for문을 통해서 반복 작업을 해봤습니다. 그런데 반복문이 하나 더 있죠

바로 while 문입니다. 반복문은 왜 for문과 while문이 있을까요? for문만 있어도 상관없을꺼 같은데 말입니다.

앞에서 본 것처럼 for문은 반복횟수가 미리 정해져 있거나 튜플, 리스트, 딕셔너리까지 유한한 반복의 자료구조로 사용했던 것을 알 수 있습니다.

 

그럼 대략적으로 감이 옵니다.

그렇습니다. 바로 while문은 반복횟수가 미리 정해지지 않고, 조건을 충족하는 동만에만 실행될 때 주로 사용합니다.

물론 결과는 같습니다. 

 

 알기쉽게 for문과 while 문의 구조를 비교해보도록 하겠습니다.

 

>>>for i in range(0,11):
 print(i)

0
1
2
3
4
5
6
7
8
9
10

 

i= 0
while i <= 10 :
 print(i)
 i = i+1
 
0
1
2
3
4
5
6
7
8
9
10

자 비교를 해보니 어떤가요?

for문이 비교적 간단해 보이고 while문은 변수를 초깃값 0을 잡아줘야하고 조건동안 변수 i 에 i+1을 더해주는 식을 추가해야합니다. 그러나 조건이라는 무궁무진한 가능성은 우리에게 많은 것을 할 수 있게 해줄겁니다.

 

1) while 문을 이용한 상한가 계산

신풍제약이 5일 연속 상한가를 갔다고 가정했을 때 (실제 일어난 일이긴 하죠?) 상한가를 계산하는 프로그램을 while문으로 연습해 보겠습니다. 2022년 10월 07일자 종가는 20050원입니다. 최고가 214000원과 비교해서 얼마나 차이가 날지 궁금해지네요.

 

신풍제약종가 = 20050
day = 1
while day<6 :
 신풍제약종가 = 신풍제약종가+신풍제약종가*0.3
 day = day + 1
 
신풍제약종가
74444.24650000001

5일 상한가하면  호가단위 100원이기 때문에 74400원입니다. 그래도 214000원을 도달하지 않습니다. 얼마나 올랐는지 실감이 나시나요?

2) while문과 if

while문으로 if문을 함께 써보도록 해보겠습니다.  출처와 비슷하게 홀수만 출력되는 프로그램을 짜보겠습니다.

원리는 간단합니다. 2로 나눴을 때 나머지가 1이 남으면 홀수인걸 이용하면 되는 일입니다. 짝수는 2로 나눴을 때 나머지가 0인 특징이 있죠

 

num = 0
while num <= 10 :
 if num % 2 == 1 :
  print(num)
 num += 1
 
1
3
5
7
9
3) break 와 continue

복잡하게 생각할것이 없습니다. break는 완전히 빠져나가는 구문이고 continue는 건너뛰는 구문입니다. 

예를 들어서 1~10까지 반복문일 때 1, 2, 3, 4, 5 반복되다가 break를 하면 6, 7, 8, 9, 10은 수행하지 않습니다.

continue는 다르죠. 특정조건일때 continue를 실행하면 그 횟수만 건너 뛰는 것입니다.

즉, 1,2,3,4 반복되다가 5, 6 을 생략하고 7,8,9,10을 출력할 수 있습니다. 감이 오나요? 한번 해보도록 하겠습니다.

num = 0
while num < 10 :
 print (num)
 if num == 5 :
  break
 num += 1

0

1

2

3

4

5

 

 

num = 0
while num < 10 :
 num += 1
 if num == 5 : continue
 print(num)

1

2

3

4

6

7

8

9

 

break는 while문을 완전히 빠져 나간것이 보이고, continue는 아래 print(num)만 건너 뛴것이 보입니다. 

어떤 특징을 가지고 있는지 이해가 되시겠죠? 하지만 continue 같은 경우 그냥 단순히 if문으로 5가 아닐 때만 출력 가능하게 하는 편이 더 쉽습니다.

728x90