본문 바로가기

Python 기초

파이썬 기초(7)-연산자

*이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*

1. 연산자

연산자란 피연산자의 값을 조직하는 구조입니다. 프로그래밍 분야에서 값(value)를 평가(evaluate)할 수 있는 문장을 표현식이라 부릅니다. 표현식은 연산자(operator)와 피연산(operand)로 구성됩니다.

연산자는 여러가지 있지만 간단하게 다섯 종류가 있습니다.

  • 산술 연산자
  • 비교 연산자
  • 할당 연산자
  • 비트 연산자
  • 논리 연산자

1-1. 산술 연산자

앞의 print()함수에 대해 공부할 때 나왔지만, 한번 더 훑고 갑겠습니다. 산술 연산자는 주로 수치형 데이터에 대한 산술 연산을 목적으로 수행합니다.

#산술 연산
print(5+15) #덧셈
print(5-15) #뺄셈
print(5*15) #곱셈
print(5/15) #나눗셈: 파이썬 나눗셈결과는 부동소수점때문에 실수 출력
print(5//15) #나눗셈 몫 출력
print(5%15) #나눗셈 나머지 출력
print(5**15) #제곱승

1-2. 비교 연산자

비교 연산자는 두 값을 비교하며, 결과값은 bool자료형(참,거짓)으로 나옵니다.

#비교 연산자
print(5 > 15)
print(5 < 15)
print(5 >= 15)
print(5 <= 15)
print(5 == 15)
print(5 != 15)

1-3. 할당 연산자

변수의 값을 할당할 때 사용합니다. 산술 연산자를 이용하며, 기존 산술 연산자를 간결하게 쓴 복합 할당 연산자를 이용해 더 간결하게 작성할 수 있습니다.

#할당 연산자
num = 5

num += 1    # num = num + 1
print(num)
num -= 1 # num=num - 1
print(num)
num *= 10 # num=num * 10
print(num)
num /= 10 # num=num / 10
print(num)
num %= 2 # num=num % 2
print(num)

1-4. 비트 연산자

십진수로 이뤄진 정수를 이진수로 표현할 때 사용하는 연산자입니다.

# 비트 연산자
a = 60  # 111100
b = 13  # 10011
print(a & b)  # 교집합, 12, 즉 1100

print(a | b)  # 합집합, 61, 즉 111101

print(a ^ b)  # 차집합, 49, 즉 110001

print(~a)  # -61, 이 결과는 2의 보수 방식 때문입니다.

print(a << 2)  # 240, 즉 11110000

print(a >> 2)  # 15, 즉 1111

1-5. 논리 연산자

파이썬에서 다른 제어문을 사용하기 위해 필요한 논리값 자료형(Boolean)값을 조작하기 위해 사용합니다. 마지막 피연산자의 값을 반환합니다. 다만, bool자료형과 다르게 True, False의 결과값만이 도출되지 않습니다.

#논리 연산자
#기본
a=13
b=7
c=a>b
d=a==b

논리 연산자의 종류는 다음과 같습니다

  • And 연산자: 앞의 식이 True고 뒤의 식이 True여야 결과가 True인 연산
  • Or 연산자: 앞의 식이 True거나 뒤의 식이 True면 결과가 True인 연산
  • Not 연산자 : 식의 값을 반대로 변환
#And연산자
print(False and 10) # and연산자 특징: 앞뒤로 True가 나와야함
# 앞이 False라면 뒤자료는 필요X->False출력
print(True and 10) #앞이 True이기에 뒤에 자료 출력->10출력
print(0 and True) #0은 False로 평가되나 False자체는 아님
# 자료형은 기본 True평가, 0이 False역할->0 출력
print(1 and 10) # 1 True평가, 뒤자료 출력->10출력

#Or연산자
print(True or 10) #앞이 True면 뒤평가도 True
#문자형과 bool자료형이 동시에 있으면 앞의 것이 출력
print(10 or True) #bool평가전에 값이 있냐없냐, 10은 True역할->10출력
print(False or 3) #앞이 False라도 뒤에 3이 True이기에 뒤자료 3출력
print('hello' or 3) #앞 'hello'가 True역할->'hello'출력
print(0 or 'Hello') #0이 False라도 뒤자료 'Hello'가 True->'Hello'출력

print(not True) # True가 아님
print(not 0) # =print(not False)
print(not 'hello') #=print(not True)