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

Python 키움API 자동매매프로그램 개발-12.Python 기초편 조건문(1)

by 행복론자 2021. 1. 25.

시리즈 이전글입니다.

2021/01/25 - [파이썬/주식 자동매매] - Python 키움API 주식자동매매프로그램 개발 - 11.Python 기초편 다양한 연산자 비교, 논리, 멤버 연산자

 

 

조건문은 특정 조건에 만족했을 때 수행하도록 하는 문법입니다.

그러면 조건문이 없는 경우는 어떻게 될까요? 

예를 들어보겠습니다.

stock_price = 70000
print('매수!')



위 코드 실행시키면 출력창에 바로 ‘매수!’가 뜨는 것을 볼 수 있습니다.

그런데 가격이 70000원이나 해 비싸니 매수하고 싶지 않다거나 60000원 이하일 때 매수하고 싶다는 조건을 만들고 싶다면 조건문 if를 다음처럼 사용합니다.

if 조건:
  '''
  조건문 밑에 수행될 부분은 들여쓰기!
  '''
  만족한다면 수행할 코드블록



if 다음에 등장하는 조건은 앞서 배운 비교, 논리, 멤버 연산자를 사용하여 True에 해당하는지 판별됩니다.

예를 들어 주가가 60000원 이하일 때만 매수를 출력하고 싶다면 다음처럼 코드를 만듭니다.

stock_price = 70000

if stock_price < 60000:
  print('매수!')



코드를 실행해보면 조건에 해당하는 stock_price < 60000의 결과가 거짓(False)이므로 print 함수는 실행되지 않았습니다. 

반대로 만족한다면 정상적으로 수행되는 것을 알 수 있습니다.

stock_price = 70000

if stock_price > 60000:
  print('매수!')



이렇게 조건에 따라서 코드를 실행할지 말지를 구분하는 것이 조건문입니다.



01.조금 심화 

심화라고 할 정도의 난이도는 아니지만 조금 더 살펴볼 부분은 다음과 같습니다. 

먼저 조건이 True나 False로 구분되지 않아 보이는 경우가 있을 수 있습니다.

다음 코드는 if 안에 진입해 print 함수가 실행될까요?

stock_price = 70000

if stock_price:
  print('매수!')



stock_price > 60000라는 것은 누가봐도 조건입니다.

그러면 조건문을 이용한 if stock_price > 60000은 stock_price값이 60000보다 클 경우에 실행됩니다.

 

하지만 if stock_price는 무엇을 확인하라는 조건인지 True인지 False인지 판단하기 어렵습니다. 결론부터 말씀 드리면 이 경우 if 문으로 진입해 코드가 정상적으로 실행됩니다.

그 이유는 조건문의 조건이 True, False를 구분 짓는 값이 아니라면 전부 다 True로 보기 때문입니다.

다음 코드를 실행시켜보면 전부 다 조건문에 진입해 코드들이 실행되는 것을 알 수 있습니다. 

if 1:
  print("1")

if '실행되나요':
  print("2")

if 7/2:
  print("3")



True, False로 구분지을 수 없다면 전부 True로 보는 규칙대로 if stock_pirce의 결과도 True로 보고 실행되는 것입니다.

하지만 예외는 있습니다. if 다음에 등장하는 값이 정수 0이거나 None일 때입니다. 

if 0:
  print("실행되지")

if None:
  print("않습니다.")



None에 대해서는 다루지는 않았으나 값이 없는 상태를 의미하는 데이터타입으로 NoneType이 따로 존재합니다. 

print(type(None))



그럼 0도 값이 없는 것 아닌가? 라고 생각하실 수 있지만 정수값인 0과 별개로 아무것도 없는 상태인 None은 구분될 수 있습니다.

Python에서는 이렇게 0과 None 값이 조건으로 올 경우 False로 보기 때문에 조건문이 실행되지 않습니다.

 

또 주의하셔야할 것은 들여쓰기 부분입니다.

들여쓰기 챕터에서 설명드린 것처럼 if 조건 밑에 등장하는 코드는 스페이스 4번 혹은 탭(tab)을 이용한 들여쓰기가 필요합니다. 스페이스를 4번이 아닌 3번, 5번 하거나 

탭을 여러번 사용한 것처럼 들여쓰기가 제대로 되지 않으면 에러가 발생합니다.

if True:
      print("무조건 실행될 것 같지만 ...")
print("안됩니다.")



반대로 if문이 끝나서 들여쓰기를 하지 않는 부분은 if와 별개로 항상 실행됩니다. if 조건을 포함한 코드는 별도의 코드블록이고 코드블록이 끝난 다음부터는 항상 실행되는 영역입니다.

if True:
  print("실행됩니다.")
print("나도 항상 됩니다.")



if 구문에 포함여부를 구분짓는 것은 들여쓰기가 적용여부입니다. 

if 문 안으로 포함시키고 싶은 내용은 꼭 들여쓰기를 해주시길 바랍니다.

if True:
  print("실행됩니다.")
  print("나도 이제 if문 안")



다음으로 알고 계셔야할 점은 if문 안에 진입시에는 항상 코드가 있어야 한다는 것입니다. 

무슨 말이냐면 다음처럼 if 진입 후 코드가 아무 것도 없는 경우(주석은 코드가 아닙니다.)

에러가 발생합니다. 

if stock_price > 70000:
  # 그냥 한번 확인차..



조건문을 사용하고 반드시 코드가 와야하기에 아무 코드라도 넣어줘야 하는데

정말 처리해줄 것이 따로 없다 하면 pass를 사용합니다.

if stock_price > 70000:
  # 아무 것도 안하기
  pass

 

 

pass는 코드로 보되 말 그대로 넘어가기 위한 코드로 아무 것도 수행하지 않으려고 할 때 사용합니다.

또 if 문 안에 또 다른 if를 사용할 수 있습니다. 

stock_price = 70000
if stock_price > 50000:
  print("5만 업")
  if stock_price > 60000:
      print("6만 업")



이 때 주의하셔야할 것이 if안에 또 다른 if는 들여쓰기를 두 번 해줘야 한다는 것입니다.

만약 그렇지 않고 다음처럼 코드를 만들면 전혀 다른 의미로 에러가 발생합니다.

stock_price = 70000
if stock_price > 50000:
  print("5만 업")
  if stock_price > 60000:
  print("6만 업")



이런 들여쓰기가 까다롭다고 느껴지시면 Pycharm의 도움을 받는 것이 좋습니다. 

if 안에 새로이 if를 만들고 엔터(enter)를 누르면 다음처럼 커서를 자동으로 들여쓰기 해줍니다. 하지만 프로그램이 복잡해질 때는 Pycharm에서 해주는 들여쓰기가 프로그래머의 의도와 다를 수도 있으니 들여쓰기를 언제 해야하는지 구분할 줄 아시는 것이 좋습니다.



마지막으로 중요한 것은 비교 연산자(==)와 대입 연산자(=)를 구분하는 것입니다.

지금까지 변수에 값을 할당할 때는 대입 연산자(=), 등호 하나를 사용했습니다.

stock_price = 70000

 

 

하지만 if 조건문 사용에서 stock_price가 60000인지 아닌지를 판단하는 것은 비교 해야하므로 비교 연산자 ==를 사용해야합니다.

무슨 말이냐면 stock_price가 60000인지 확인하는 조건을 다음처럼 실수하기 쉽습니다.

stock_price = 70000
if stock_price = 60000:
  print(stock_price)



이렇게 할 경우 에러가 발생하여 실행이 안되지만 원인을 찾을 때 어디서 잘못되었는지 찾기 어려우실 수 있습니다. 원래 의도대로라면 다음처럼 ==를 사용해야 합니다.

stock_price = 70000
if stock_price == 60000:
  print(stock_price)

 

 


같이 보시면 좋을 글

2021/02/10 - [파이썬/주식 자동매매] - 주식매매프로그램 개발 노하우, 소스를 담은 전자책이 발간되었습니다.

 

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

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

jsp-dev.tistory.com

 

2021/01/26 - [파이썬/주식 자동매매] - Python 키움API 자동매매프로그램 개발-13.Python 기초편 조건문(2)

 

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

댓글