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

  1. () : 괄호
  2. ** : 제곱
  3. +, -, ~ : 부호, 비트 부정
  4. *, /, //, % : 곱하기, 나누기, 몫, 나머지
  5. +, - : 더하기, 빼기
  6. <<, >> : 비트 shift 연산자
  7. & : 비트 논리곱
  8. ^ : 비트 배타적 논리합
  9. | : 비트 논리합
  10. <, <=, >, >=, ==, != : 비교 연산자
  11. not : 부정
  12. and : 논리곱
  13. or : 논리합
1. 괄호가 최우선
2. 산술 연산이 비트 연산보다 우선
3. 관계 연산이 논리 연산보다 우선