TOC
참고 강의
SWEA 파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법 #6
연산자
- 연산자는 피연산자들을 원하는 방향으로 움직이게 만드는 역할을 한다.
- 산술연산자, 대입연산자, 관계연산자, 논리연산자, 비트연산자 등 여러 종류가 있다.
산술연산자
+
: 양변의 값을 더하기-
: 양변의 값을 빼기*
: 양변의 값을 곱하기/
: 좌변의 값을 우변의 값으로 나누기//
: 좌변의 값을 우변의 값으로 나눈 몫%
: 좌변의 값을 우변의 값으로 나눈 나머지**
: 좌변의 값을 우변의 값으로 제곱
문자형과 숫자형 연산
문자형 + 문자형은 두 개의 문자열을 연결한 새로운 문자열을 만드는 문자열 접합(+) 연산
>>> a, b, c = "2", "3", 4
>>> print(a + b)
23
- 만약 문자형이 아니라 숫자형으로 계산하고 싶다면? : int() 함수
>>> a, b, c = "2", "3", 4
>>> print(int(a) + int(b))
5
- 문자형과 숫자형을 접합(+) 연산을 시도한다면? : TyperError
>>> a, b, c = "2", "3", 4
>>> print(b + c)
Traceback...
TypeError: must be str, not int
대입연산자
용도
- 변수 선언
- 연산 결과를 변수에 저장
- 함수 반환값을 변수에 저장
종류
=
: 대입(할당)+=
: 좌변의 변수에서 우변의 값을 더해서 좌변의 변수에 대입-=
: 좌변의 변수에서 우변의 값을 빼서 좌변의 변수에 대입*=
: 좌변의 변수에서 우변의 값을 곱해서 좌변의 변수에 대입 ...
즉, a += b 는 a + b 의 값을 a에 대입하는 것
>>> a = 10
>>> a +=5; print(a)
15
>>> a /= 5; print(a)
10.0
# 정수형 변수 a의 값 50 / 정수 5 = 10.0
# / 연산의 결과는 부동소수점 숫자형을 반환
위 과정에서 다시 한 번 중요한 것은 / 연산의 결과이다.
주의
'/' 연산의 결과는 부동소수점 숫자형을 반환
관계연산자
값을 비교하는 연산
==
: 양변의 값이 같으면 True를 반환!=
: 양변의 값이 다르면 True를 반환- 기타 부등호 등
논리연산자
선택의 문제에서 특정 조건을 만족하는지를 검사하기 위한 조건식을 만들 때 사용
and
: 양변의 값 모두 True일 경우에만 True 반환or
: 양변의 값 모두 False일 경우에만 False 반환not
: True일 경우 False, False일 경우 True를 반환
>>> a = 3
>>> not (a > 7 and a < 12)
True
# not (False and True)
# not (False)
# True
비트연산자
&
- 비트 논리곱 연산자
- and와 비슷
- 양변의 비트 값 모두 1일 경우에만 1를 반환
>>> x, y = 1, 0
>>> print(x & y)
0
>>> a, b = 2, 3 # 0010, 0011
>>> print(a & b) # 0010 & 0011 => 0010
2 # 0010
|
- 비트 논리합 연산자
- or과 비슷
- 양변의 값 모두 0일 경우에만 0
>>> x, y = 1, 0
>>> print(x | y)
1
>>> a, b = 2, 3 # 0010, 0011
>>> print(a | b) # 0010 | 0011 => 0011
3 # 0011
^
- 비트 배타적 논리합 연산자
- 양변의 값이 다를 경우 1, 같을 경우 0을 반환
>>> x, y = 1, 0
>>> print(x ^ y)
1
>>> a, b = 2, 3 # 0010, 0011
>>> print(a ^ b) # 0010 ^ 0011 => 0001
1 # 0001
~
- 비트 부정 연산자
- 단항 연산자
- 비트의 값이 1일 경우 0, 0일 경우 1을 반환
>>> x = 1
-2
>>> a = 2 # 0010
print(~a) # ~ 0010 => 1101
-3 # 1101
<<
- 비트 왼쪽 shift 연산자
- 좌변의 값을 우변의 값 만큼 비트를 왼쪽으로 이동
- 즉, 우변 값만큼 2로 곱한다.
>>> x = 4
>>> print(x << 1)
8
>>> a = 8 # 0000 1000
>>> print(a << 1) # 0000 1000 << 1 => 0001 0000
16 # 0001 0000
>>
- 비트 오른쪽 shift 연산자
- 좌변의 값을 우변의 값 만큼 비트를 오른쪽으로 이동
- 즉, 우변값만큼 2로 나눈다.
>>> x = 4
>>> print(x >> 1)
2
>>> a = 8 # 0000 1000
>>> print(a >> 1) # 0000 1000 >> 1 => 0000 0100
4 # 0000 0100
연산자의 우선순위
- () : 괄호
- ** : 제곱
- +, -, ~ : 부호, 비트 부정
- *, /, //, % : 곱하기, 나누기, 몫, 나머지
- +, - : 더하기, 빼기
<<, >>
: 비트 shift 연산자- & : 비트 논리곱
- ^ : 비트 배타적 논리합
- | : 비트 논리합
<, <=, >, >=, ==, !=
: 비교 연산자- not : 부정
- and : 논리곱
- or : 논리합
1. 괄호가 최우선
2. 산술 연산이 비트 연산보다 우선
3. 관계 연산이 논리 연산보다 우선