본문 바로가기

Python

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

반응형

2022.10.08 - [Python] - 주식 알고리즘 만들기 - 3. 제어문 ( boolean, 논리 연산자 , if)

 

주식 알고리즘 만들기 - 3. 제어문 ( boolean, 논리 연산자 , if)

출처 : https://wikidocs.net/3082 # Boolean Boolean은 다른 자료형과 달리 True 또는 False라는 값만 바인딩할 수 있습니다. 표 4.1 파이썬 비교 연산자 연산자연산자 의미 == 같다. != 다르다. > 크다. < 작다...

jiain.tistory.com

 

# 반복문 for문 

1) for와 range

수십개는 금방하지만 수백개 수천개 넘어가면 반복작업을 하는데 많은 시간 소모가 발생합니다.

이때 반복문을 사용하면 편하게 할 수 있는데, 먼저 for문의 사용법을 알아 봅시다. 주의) 들여쓰기를 잊지맙시다

 

for i in [ 0, 1, 2, 3, 4] :

 print(i)

 

원하는 숫자를 수행할 수있습니다.

 

for i in [ 1, 10 ,100, 1000] :

 print(i)

 

그런데 이렇게 쓰면 in [] 안에 반복해야할 숫자를 입력해야하는 시간작업이 발생하기 때문에 효율적이지 않는데

이때 range함수를 for문과 함께 사용하면 환상적인 조합이 완성됩니다. range(이상,미만) 범위로 나타낼 수 있습니다.

리스트로 range에 속해 있는 범위를 직접 봅시다.

 

list(range(1,10))

>> [1, 2, 3, 4, 5, 6, 7, 8, 9]

 

10은 포함되지 않는 걸 확인할 수 있고, 우리는 이것을 이용해서 for문을 더욱더 아름답게 꾸밀 수 있습니다.

 

for i in range(0,11) :

 print(i)

 

>> 0

1

2

3

4

5

6

7

8

9

10

 

2) for와 리스트

for문은 숫자만 이용할 수 있는 것이 아니라 리스트를 활용해서 문자도 활용할 수 있습니다.

관심 종목에 종목을 넣고 10주를 사는 프로그램을 작성해봅시다.

 

관심종목 = [ "엔씨소프트" , "삼성전자" , "NAVER" , "카카오페이" , "CS" , "아모레퍼시픽"]
for 종목 in 관심종목 : 
 print("%s : 매수 10" % 종목)

>>엔씨소프트 : 매수 10
삼성전자 : 매수 10
NAVER : 매수 10
카카오페이 : 매수 10
CS : 매수 10
아모레퍼시픽 : 매수 10

 

 print("%s : 매수 10" % 종목)과 print(종목 + ":매수10")은 같은 결과를 출력하지만,
 print("종목: 매수 10")은 변수로 판단하지 않고 문자로 판단하기에 리스트 데이터 값이 반환 되지 않는다.
 
 
3) for와 튜플

 

앞에서 이야기한 것처럼 튜플은 수정할 수 없기 때문에 리스트보다 빠릅니다. 따라서 관심 종목을 변경할 필요가 없는 경우에는 이를 튜플로 관리하고 파이썬의 for 문을 사용하는 것이 좋고, 관심 종목을 변경할 필요가 있는 경우에는 데이터를 리스트로 관리하는 것이 좋습니다.

 

 

4) for문과 딕셔너리

앞의 예제에서는 관심 종목에 대해 동일하게 주식을 10주씩 매수했습니다. 그런데 이번에는 종목마다 다른 수량만큼 주식을 매수하고자 합니다. 프로그램으로 주식을 매수하기 전에 종목별로 얼마만큼 매수할 것인지를 미리 표현해야 한다면 딕셔너리를 통해 다음과 같이 쉽게 데이터를 표현할 수 있습니다. 여전히 관심 종목은 "엔씨소프트" , "삼성전자" , "NAVER" , "카카오페이" , "CS" , "아모레퍼시픽"이지만 매수 수량은 종목마다 다른 것을 확인할 수 있습니다.

관심종목 = { "엔씨소프트" : 5 , "삼성전자" : 10 , "NAVER" : 5 , "카카오페이" : 10 , "CS" : 20  , "아모레퍼시픽" : 20}

관심종목이라는 딕셔너리에 있는 키-값 쌍에 대해 매수 동작을 반복적으로 수행하려면 for 문을 사용하면 됩니다. 다만 딕셔너리의 한 원소에는 키와 값이 있기 때문에 for 문 다음에 있는 변수가 한 개가 아니라 두 개를 적어야 합니다. 그리고 딕셔너리 이름을 적은 다음 .items()를 붙여야 합니다.

for 종목, 매수량 in 관심종목.items() : 
 print (" %s : 매수 %s " % (종목,매수량))

 엔씨소프트 : 매수 5 
 삼성전자 : 매수 10 
 NAVER : 매수 5 
 카카오페이 : 매수 10 
 CS : 매수 20 
 아모레퍼시픽 : 매수 20

 

728x90