연산자

산술 연산자

Python에서는 기본적인 사칙연산이 가능합니다.

연산자

내용

+

덧셈

-

뺄셈

*

곱셈

/

나눗셈

//

%

나머지(modulo)

**

거듭제곱

  • 나눗셈 (/) 은 항상 float를 돌려줍니다.

  • 정수 나눗셈 으로 (소수부 없이) 정수 결과를 얻으려면 // 연산자를 사용합니다.

# 2의 1000승을 확인해봅시다.

2 ** 1000
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
# 나눗셈과 관련된 산술연산자를 활용해봅시다.
# 5와 2를 나눈 값을 출력해봅시다.
# 5와 2를 나눈 값의 몫을 출력해봅시다.
# 5와 2를 나눈 값을 integer로 형변환해봅시다.
# 5와 2를 나눈 값의 나머지를 출력해봅시다.

print(5 / 2)
print(5 // 2)
print(int(5 / 2))
print(5 % 2)
2.5
2
2
1
# divmod는 나눗셈과 관련된 함수입니다.
# divmode() 에 5와 2를 넣고 결과를 print로 확인해봅시다.
# 변수 quotient, remainder 에 divmode(5, 2)의 값을 할당해봅시다.
# f-string을 활용하여 quorient와 remainder의 값을 출력해봅시다.

print(divmod(5, 2))
quotient, remainder = divmod(5, 2)
print(f'몫은 {quotient}, 나머지는 {remainder}')
(2, 1)
몫은 2, 나머지는 1
# 음수 양수 표현도 해봅시다.
# 변수 positive_num 에 4를 할당하고 print할 때 -를 붙여서 print로 출력해봅시다.
# 변수 negative_num 에 -4를 할당하고 print할 때 + 와 - 를 붙여서 각각을 print로 출력해봅시다.

positive_num = 4
print(-positive_num)

negative_num = -4
print(+negative_num)
print(-negative_num)
-4
-4
4

비교 연산자

우리가 수학에서 배운 연산자와 동일하게 값을 비교할 수 있습니다.

연산자

내용

<

미만

<=

이하

>

초과

>=

이상

==

같음

!=

같지않음

is

객체 아이덴티티

is not

부정된 객체 아이덴티티

# 숫자의 대소관계를 비교해봅시다.
# 아무 정수 2개를 비교해봅시다.

3 > 6
False
# 다른 숫자인지 확인해봅시다.
# 3의 정수형과 실수형이 같은지 비교해봅시다.

3.0 == 3
True
# 같은 숫자인지 확인해봅시다.
# 같은 숫자를 != 를 확인하여 비교해봅시다.

3 != 3
False
# 문자열도 같은지 확인해봅시다.
# 대문자 HI와 소문자 hi가 같은지 확인해 봅시다.

'HI' == 'hi'
False

논리 연산자

연산자

내용

a and b

a와 b 모두 True시만 True

a or b

a 와 b 모두 False시만 False

not a

True -> False, False -> True

우리가 보통 알고 있는 & |은 파이썬에서 비트 연산자입니다.

# and과 관련해서 모든 case를 출력해봅시다.
# True와 False를 이용하여 and 의 모든 경우의 수(4개)를 출력해봅시다. 
# (True and True), (True and False), ...

print(True and True)
print(True and False)
print(False and True)
print(False and False)
True
False
False
False
# or과 관련해서 모든 case를 출력해봅시다.
# True와 False를 이용하여 or 의 모든 경우의 수(4개)를 출력해봅시다.
# (True or True), (True or False), ...

print(True or True)
print(True or False)
print(False or True)
print(False or False)
True
True
True
False
# not을 활용해봅시다.
# print를 이용하여 True 와 0의 not 값을 각각 확인해봅시다.

print(not True)
print(not 0)
False
True
  • 파이썬에서 and는 a가 거짓이면 a를 리턴하고, 참이면 b를 리턴합니다.

  • 파이썬에서 or은 a가 참이면 a를 리턴하고, 거짓이면 b를 리턴합니다.

단축평가 (Short Circuit Evaluation)

  • 첫 번째 값이 확실할 때, 두 번째 값은 확인 하지 않습니다.

  • 조건문에서 뒷 부분을 판단하지 않아도 되기 때문에 속도가 향상됩니다.

# 문자열 'a'와 'b'의 and 값이 무엇인지 확인해봅시다.

'a' and 'b'
'b'
# 문자열 'a'와 'b'의 or 값이 무엇인지 확인해봅시다.

'a' or 'b'
'a'
vowels = 'aeiou'
# 'a' and 'b' 의 결과값이 vowels에 포함이 되었는지 확인해봅시다.

('a' and 'b') in vowels
False
# 'b' and 'a' 의 결과값이 vowels에 포함이 되었는지 확인해봅시다. 

('b' and 'a') in vowels
True
  • and 는 둘 다 True일 경우만 True이기 때문에 첫번째 값이 True라도 두번째 값을 확인해야 하기 때문에 ‘b’가 반환됩니다.

  • or 는 하나만 True라도 True이기 때문에 True를 만나면 해당 값을 바로 반환합니다.

# and의 단축평가(short-circuit evaluation)에 대해서 알아봅시다.
# (3 and 5) , (3 and 0), (0 and 3), (0 and 0) 의 결과를 print로 출력해봅시다.

print(3 and 5)
print(3 and 0)
print(0 and 3)
print(0 and 0)
5
0
0
0
# or의 단축평가(short-circuit evaluation)에 대해서 알아봅시다.
# (3 or 5) , (3 or 0), (0 or 3), (0 or 0) 의 결과를 print로 출력해봅시다.

print(5 or 3)
print(3 or 0)
print(0 or 3)
print(0 or 0)
5
3
3
0

복합 연산자

복합 연산자는 연산과 대입이 함께 이뤄집니다.

가장 많이 활용되는 경우는 반복문을 통해서 갯수를 카운트하거나 할 때 활용됩니다.

연산자

내용

a += b

a = a + b

a -= b

a = a - b

a *= b

a = a * b

a /= b

a = a / b

a //= b

a = a // b

a %= b

a = a % b

a **= b

a = a ** b

# 복합연산자는 이럴 때 사용됩니다.
# 0으로 할당된 변수 cnt 를
# 반복문 while 을 이용하여 5회 반복하는데
# 반복하는 동안 cnt를 print로 출력하고 cnt에 1씩 더해봅시다.
# 단, cnt 를 더할때는 복합연산자를 사용해봅시다.

cnt = 0
while cnt < 5:
    print(cnt)
    cnt += 1
0
1
2
3
4

기타 주요 연산자

Concatenation

숫자가 아닌 자료형은 + 연산자를 통해 합칠 수 있습니다.

# 문자열을 더해봅시다.(합쳐봅시다.)
# 아무 문자 2개를 + 를 이용하여 합쳐봅시다.

'hi, ' + 'bye!'
'hi, bye!'
# list 등 다른 데이터타입(컨테이너)에서도 활용 가능합니다.
# 두 list [1, 2, 3] 과 [4, 5, 6] 을 + 를 이용하여 합쳐봅시다.

[1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]

Containment Test

in 연산자를 통해 요소가 속해있는지 여부를 확인할 수 있습니다.

# 문자열안에 특정한 문자가 있는지 확인해봅시다.
# 문자열 'a' 가 'apple' 에 속해있는지 확인해봅시다.

'a' in 'apple'
True
# list 등 다른 데이터타입(컨테이너)에서도 활용 가능합니다.
# 정수 1이 list [1, 2, 3]에 속해있는지 확인해봅시다.

1 in [1, 2, 3]
True

Identity

is 연산자를 통해 동일한 object인지 확인할 수 있습니다. (OOP 파트에서 다시 학습하게 됩니다.)

# 파이썬에서 -5 부터 256 까지의 id는 동일합니다.
# 변수 a에는 3을 변수 b에는 3을 할당해봅시다.
# 그리고 a 와 b 가 동일한 object인지 확인해봅시다.

a = 3
b = 3
a is b
True
# 257 이후의 id 는 다릅니다.
# 변수 a에는 257을 변수 b에는 257을 할당해봅시다.
# 그리고 a 와 b 가 동일한 object인지 확인해봅시다.

a = 257
b = 257
a is b
False

Indexing/Slicing

[]를 통한 값을 접근하고, [:]을 통해 슬라이싱할 수 있습니다. (Container 파트에서 자세하게 학습합니다.)

# 문자열을 인덱싱을 통해 값에 접근해봅시다.
# 문자열 'hi'의 첫번째 값을 인덱싱으로 확인해봅시다.

'hi'[0]
'h'

연산자 우선순위

  1. ()을 통한 grouping

  2. Slicing

  3. Indexing

  4. 제곱연산자 **

  5. 단항연산자 +, - (음수/양수 부호)

  6. 산술연산자 *, /, %

  7. 산술연산자 +, -

  8. 비교연산자, in, is

  9. not

  10. and

  11. or

파이썬 문서

# 우선순위를 확인해봅시다.
# -3 ** 6의 값을 확인해봅시다.

-3 ** 6
-729
# (-3) ** 6의 값을 확인해봅시다.

(-3) ** 6
729