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

Python 키움API 자동매매프로그램 개발-11.Python 기초편 다양한 연산자 비교, 논리, 멤버 연산자

by 행복론자 2021. 1. 25.

시리즈 이전글입니다.

2021/01/25 - [파이썬/주식 자동매매] - Python 키움API 주식자동매매프로그램 개발 - 10.Python 기초편 연산기초

 

 

+, -, *, /,  // 같이 산술적인 연산에 필요한 연산자를 산술연산자라고 합니다.

산술 연산자는 기초 연산 챕터에서 다룬 바가 있습니다. 이외에도 

비교, 논리, 멤버  bitwise 등 다양한 연산자가 있지만 이번 챕터에서는 사용 빈도가 높은 비교, 논리, 멤버 연산자에 대해서만 배워보도록 하겠습니다.



01.비교 연산자

비교 연산자란 부등호(>, >=, <, <=) 및 등호(==), 같지 않음(!=)으로 이루어져 있습니다.

먼저 부등호를 이용한 연산은 쉽게 이해하실 수 있으실 겁니다.

3 > 1  

3 >= 1

3 < 1

3 <= 1

 

 

부등호를 이용하여 값을 비교하는 것은 어렵지 않지만 그래도 알고 계셔야할 점은 같거나 큰(>=), 같거나 작은(<=)처럼 등호(=)를 사용하는 경우 등호가 마지막에 등장합니다.

비교 연산자의 결과는 참, 거짓(True, False) 같은 boolean 타입의 자료형입니다.

 

코드를 이렇게 작성하고 Pycharm에서 실행만하면 출력결과를 확인하실 수 없으니 print() 함수를 이용해 결과를 출력하는 코드를 넣어보겠습니다.

print(3 > 1)   # 3이 1보다 크다 => True
print(3 >= 1)  # 3이 1보다 같거나 크다 => True
print(3 < 1)   # 3이 1보다 작다 => False
print(3 <= 1)  # 3이 1보다 같거나 작다 => False  

 

 

부등호를 이용한 비교 연산은 크게 어려울 것은 없지만 같은 타입의 자료형끼리만 비교 연산이 가능하는 점을 기억하시길 바랍니다. 

print('3' > 1)

# TypeError: unorderable types: str() > int()

 

 

조금 응용해보면 다음처럼 부등호를 2개 이상 사용한 연산도 가능합니다.

print(5 > 3 > 1)  # 5가 3보다 크고 3은 1보다 크다 => 참(True)
print(3 < 1 < 7)  # 7은 1보다 크고 1은 3보다 크다 => 거짓(False)

 

다음은 같다(==), 같지 않음(!=)을 의미하는 연산자를 사용해보겠습니다.

var = 3

print(var == 3)  # var(3)은 3이다 => True
print(var != 4)  # var(3)은 4가 아니다 => True



var라는 변수에 3을 넣었으니 var와 3은 서로 같습니다 같은지 비교하는 (==) 연산의 결과는 참입니다. 하지만 var는 4와는 다르기 때문에 (!=) 연산의 결과는 참이 됩니다.



02.논리 연산자

논리 연산은 and, or, not 을 이용한 연산입니다. 

간단한 정리를 해보고 사용하는 법에 대해서 알아보도록 하겠습니다. 

연산자 

사용법

의미

and 

A and B

A와 B 모두 참이면 참

or

A or B

A 또는 B 중 하나라도 참이면 참 

not

not A 

A가 참이면 거짓, A가 거짓이면 참 



A and B는 말 그대로 A와 B 모두 참일 때 참입니다.

따라서 둘 중 하나라도 False에 해당된다면 결과는 False가 됩니다. 

print(True and True)   # True
print(True and False)  # False
print(False and True)  # False
print(False and False) # False

 

 

조금 더 응용해보겠습니다. 다음은 결과가 어떻게 될까요?

print(1 > 2 and 3 > 2) 



위 결과는 왼쪽항에 해당하는 1>2와 오른쪽에 3>2가 모두 참일 경우에만 True가 나오고 둘 중 하나라도 거짓이라면 False가 나올 것입니다.

코드를 실행하면 컴퓨터가 제일 먼저 왼쪽항부터 확인해봅니다. 

1>2의 결과는 거짓(False)이니 and로 연결된 다음 3>2은 살펴볼 필요가 없습니다. 

왜냐하면 첫 연산부터 거짓이기 때문에 and 다음 어떤 결과가 오더라도 최종 결과는 False가 될 것이기 때문입니다. 

이렇게 논리 연산자와 다른 연산자를 혼합한 연산이 가능합니다.

 

다음은 or을 살펴보겠습니다.

A or B는 A 또는 B 둘 중 하나라도 참이면 True라는 뜻입니다. 

코드를 살펴 보겠습니다. 

print(True or True)   # True
print(True or False)  # True
print(False or True)  # True
print(False or False) # False

print(1 > 0 or 2 > 2 or 3 > 2) # True



논리 연산자로 연결된 연산에서 True가 하나라도 존재한다면 최종 결과는 True가 됩니다.

마지막으로 not입니다.

not은 not 다음 등장하는 연산의 결과를 반대로 만드는 연산으로 참을 거짓, 거짓을 참으로 만든다고 생각하시면 됩니다.

print(not True)   # False
print(not False)  # True
print(not 1 > 0)  # False
print(not -1 > 0) # True



03.멤버 연산자 

멤버 연산자는 배우기 전에 먼저 사용해본 경험이 있습니다. 

바로 딕셔너리에 Key가 존재하는지 아닌지를 판단하는 방법으로 다음 문법을 사용한 적이 있습니다. 

조회할 Key in 딕셔너리 



in이라는 연산자를 사용한다는 것은 in 앞에 있는 값이 in 뒤에 있는 반복 가능한 객체에 있는지 확인하여 True 또는 False를 반환합니다. 

여기서 반복 가능한 객체라는 표현이 어색하실 수 있습니다. 반복 가능한 객체란 단순히 우리가 배웠던 튜플, 리스트, 딕셔너리 정도가 있다라고 생각해주시길 바랍니다.

 

그러면 딕셔너리 외의 리스트에서의 사용도 한번 해보겠습니다.

temp = [1, 2 ,3, 4]

print(3 in temp)   # True
print('3' in temp) # False

 

 

1, 2, 3, 4 라는 값을 가지고 있는 리스트 temp는 3을 포함하고 있습니다.

따라서 3이라는 값이 temp에 있냐는 3 in temp 연산의 결과는 True가 됩니다.

하지만 문자 ‘3’은 3과 다르기에 temp에 있다고 볼 수 없습니다. 이럴 경우 결과는 False가 됩니다.

 

그러면 not in의 사용 결과는 어떨까요?

not in이란 없는지 확인하는 것으로 값이 없어야 True가 나옵니다. 같은 리스트를 대상으로 예를 들어보겠습니다.

temp = [1, 2 ,3, 4]

print(3 not in temp)   # False
print('3' not in temp) # True

 

 

not in은 존재하지 않는지 확인하는 연산으로 3은 temp에 존재하기 때문에 False입니다.

반대로 ‘3’은 temp에 존재하지 않는 값이라 not in의 결과가 True가 나오는 것을 알 수 있습니다.

 

 

 


같이 보시면 좋을 글

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

 

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

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

jsp-dev.tistory.com

 

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

 

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

댓글