연산자란, 연산자입니다.
정확히 말하면, 값과 값 사이에서 뭔가 계산해주는 기호입니다.
(뭐 눈치채셨겠지만 이 강의는 정의를 설명할 때마다 그 단어를 다시 쓰는 병에 걸렸습니다.)
예를 들어:
1 + 1
여기서 +가 연산자입니다.
놀랍지 않나요? 안 놀랍다고요? 그럼 넘어가겠습니다.
참고로 이번 강의의 예제는 코드와 결과만 짧게 보여드립니다. 파일로 실행할 때 결과를 화면에서 보려면 print(1 + 1)처럼 print()로 감싸야 합니다.
숫자끼리 계산할 때 쓰는 연산자입니다. (여러분이 초등학교 때 배운 그거 맞습니다.)
1 + 1
결과:
2
천재시네요.
5 - 3
결과:
2
또 2입니다. 우연이겠죠.
학교에서는 ×를 쓰지만, 파이썬에는 그런 키가 없습니다.
그래서 *를 씁니다.
4 * 3
결과:
12
/를 씁니다.
7 / 2
결과:
3.5
소수점까지 정직하게 나와줍니다. 기특합니다.
소수점 없이, 몫만 필요할 때가 있습니다.
그럴 땐 //를 씁니다.
7 // 2
결과:
3
0.5는 어디 갔냐고요? 버려졌습니다. 파이썬은 냉정합니다.
%를 쓰면 나눈 나머지가 나옵니다.
7 % 2
결과:
1
참고로 이 %는 “퍼센트”가 아니라 “모듈로(modulo)”라고 읽습니다. 있어 보이죠.
**를 쓰면 거듭제곱이 됩니다.
2 ** 10
결과:
1024
2를 10번 곱한 겁니다. 직접 세보진 마세요. 믿으세요.
+ 더하기
- 빼기
* 곱하기
/ 나누기 (소수점 포함)
// 나누기 (몫만)
% 나머지
** 거듭제곱
숫자 연산도 강력하지만 (하지만 아벨-루피니 정리에 의해 5차방정식 이상의 다항방정식에서는 유한한 사칙연산과 근호만으로 해를 나타내는 공식이 존재하지 않습니다) 논리적인 판별을 위해 비교 연산자를 배워보도록 합시다.
두 값을 비교해서, 참(True)이거나 거짓(False)인 결과를 내놓습니다.
이 참/거짓을 불리언(boolean)이라고 부릅니다. (나중에 더 자세히 다룹니다.)
수학에서는 =를 쓰지만, 파이썬에서 =는 이미 변수에 값을 넣을 때 썼습니다(04강 기억나시죠).
그래서 같은지 비교할 땐 ==를 씁니다. (두 번 씁니다. 헷갈리지 마세요.)
1 == 1
결과:
True
1 == 2
결과:
False
당연합니다. 1은 2가 아니니까요. 유치원 안 다녀오셔도 됩니다.
!=를 씁니다.
1 != 2
결과:
True
1이랑 2는 다르니까 True입니다. 이제 감 잡히시죠.
5 > 3
결과:
True
5 < 3
결과:
False
5 >= 5
결과:
True
4 <= 3
결과:
False
== 같다
!= 다르다
> 크다
< 작다
>= 크거나 같다
<= 작거나 같다
참/거짓 값 여러 개를 조합할 때 씁니다.
영어 단어를 그대로 씁니다. (파이썬은 이럴 때만 착합니다.)
양쪽 다 True여야 True입니다.
True and True
결과:
True
True and False
결과:
False
하나라도 거짓이면 그냥 다 거짓입니다. 냉정한 녀석입니다.
참고로 and연산은 논리곱 이라고도 불리는데, 이유는: (0은 False고 1은 True입니다)
1 and 1 = 1 = 1 * 1
1 and 0 = 0 = 1 * 0
0 and 1 = 0 = 0 * 1
0 and 0 = 0 = 0 * 0
이기 때문입니다.
신기하죠잉?
둘 중 하나만 True여도 True입니다.
True or False
결과:
True
False or False
결과:
False
이건 둘 다 거짓이니 어쩔 수 없습니다.
참/거짓을 뒤집습니다.
not True
결과:
False
not False
결과:
True
청개구리 연산자입니다.
비교 연산자랑 논리 연산자를 같이 쓸 수 있습니다.
age = 20
age >= 18 and age < 65
결과:
True
20살은 성인이면서 아직 65살은 안 됐으니 True입니다. 축하합니다, 여러분은 논리를 짰습니다.
04강에서 =로 변수에 값을 넣는 법을 배웠습니다.
그런데 매번 이렇게 쓰기 귀찮을 때가 있습니다.
count = 0
count = count + 1
이걸 줄여 쓸 수 있습니다.
count = 0
count += 1
결과는 똑같습니다. 타자만 덜 치는 겁니다. 게으름의 미학입니다.
count += 1 → count = count + 1
count -= 1 → count = count - 1
count *= 2 → count = count * 2
count /= 2 → count = count / 2
count //= 2 → count = count // 2
count %= 2 → count = count % 2
count **= 2 → count = count ** 2
다 똑같은 패턴입니다. 외울 필요 없이 눈치로 때우세요.
어떤 값이 리스트(혹은 튜플, 문자열) 안에 있는지 확인할 때 씁니다.
items = ["foo", "bar", "baz"]
"foo" in items
결과:
True
"foo"가 items 안에 있으니까 True입니다.
"hello" in items
결과:
False
"hello"는 없으니까 False입니다. 없는 걸 있다고 하면 그게 더 마법이겠죠.
반대로, 없는지 확인합니다.
"hello" not in items
결과:
True
이건 좀 철학적입니다.
==는 값이 같은지 비교하고, is는 진짜로 같은 것(정체성)인지 비교합니다.
지금 당장은 이렇게만 압시다.
a = None
a is None
결과:
True
None은 “값이 없음”을 뜻하는 특별한 값인데, 얘를 비교할 땐 관례적으로 == 대신 is를 씁니다.
왜냐고요?
마법입니다. (나중에 자세히 설명해 드리겠습니다.)
a = 5
a is not None
결과:
True
수학 시간에 배운 “곱셈 나눗셈 먼저, 덧셈 뺄셈 나중” 그거, 파이썬에도 있습니다.
1 + 2 * 3
결과:
7
2 * 3이 먼저 계산되고, 그다음에 1을 더합니다.
헷갈리면 그냥 괄호를 쓰세요.
(1 + 2) * 3
결과:
9
괄호 안이 항상 제일 먼저입니다. 이건 수학이랑 똑같습니다. 다행히도요.
오늘은 연산자를 배웠습니다.
산술 연산자도 배웠고, 비교 연산자도 배웠고, 논리 연산자도 배웠고, 대입 연산자도 배웠고, 멤버십 연산자도 배웠고, 신원 연산자까지 배웠습니다.
많이 배웠네요. 스스로를 칭찬해 주십시오.
다만 is가 정확히 뭘 비교하는지는 아직 설명 안 했습니다. (미리 알고 싶다면 C언어를 1시간 정도 하시면 알게 됩니다)
마법입니다.
이제 06강으로 넘어가십시오(조건문을 배울 것입니다).