연산자¶
산술 연산자¶
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
비교 연산자¶
우리가 수학에서 배운 연산자와 동일하게 값을 비교할 수 있습니다.
연산자 |
내용 |
---|---|
|
미만 |
|
이하 |
|
초과 |
|
이상 |
|
같음 |
|
같지않음 |
|
객체 아이덴티티 |
|
부정된 객체 아이덴티티 |
# 숫자의 대소관계를 비교해봅시다.
# 아무 정수 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'