연산자에서 중요한 것
연산자 우선순위
하나 이상의 연산자가 등장할 때 연산자는 순서 규칙을 따른다.
- 괄호
- 제목
- 곱셈과 나눗셈
- 덧셈과 뺄셈
- 같은 실행 순위는 왼쪽 -> 오른쪽
가장 높은 것부터 가장 낮은 것까지의 연산자의 우선순위 | 이름 | ||
---|---|---|---|
+var, -var, ~var | 단항 연산자 | ||
** | 제곱 연산자 | ||
*, /, //, % | 곱셈, 나눗셈, 몫, 나머지 | ||
+, - | 덧셈, 뺄셈 | ||
<<, >> | 왼쪽 및 오른쪽 이동 | ||
& | 논리곱 | ||
^ | 배타적 논리합 | ||
\ | \ | 논리합 | |
<, >, <=. >= , <> | 비교 연산자 | ||
==, != , is, is not, in, not in | 동등 및 포함 | ||
and, or, not | 여부 판단 조건 |
수학 연산자
연산자 | 설명 |
---|---|
+ | 덧셈 |
- | 뺄셈 |
* | 곱셈 |
/ | 나눗셈 |
// | 나눗셈의 몫 |
% | 모듈로 (나눗셈의 나머지) |
** | 지수 연산자 |
+var | 단항 덧셈 |
-var | 단항 뺄셈 |
수학연산자 예제코드
print("I will now count my chickens:")
print("Hens", 25 + 30 / 6)
print("Roosters", 100 - 25 * 3 % 4)
print("Now I will count the eggs:")
print(3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6)
print("Is it true that 3 + 2 < 5 - 7?")
print(3 + 2 < 5 - 7)
print("What is 3 + 2?", 3 + 2)
print("What is 5 - 7?", 5 - 7)
print("Oh, that's why it's False.")
print("How about some more.")
print("Is it greater?", 5 > -2)
print("Is it greater or equal?", 5 >= -2)
print("Is it less or equal?", 5 <= -2)
수학 내장 함수
기능 | 설명 |
---|---|
abs(var) | 절대값 |
pow(x, y) | ** 연산자 대신에 사용 가능 |
pow(x,y,modulo) | 삼항 지수-나머지 (x ** y) % modulo |
round(var[, n]) | 10-n 또는 (10**-n)의 반올림한 근사치를 반환. n의 기본값은 0 |
divmod(x, y) | 나눗셈의 몫과 나머지로 이루어진 튜플을 반환 |
예제코드
>>> abs(10)
10
>>> abs(-10)
10
>>> pow(2, 3)
8
>>> pow(2, 3, 3)
2
>>> round(2.57, 1)
2.6
>>> round(2.57)
3.0
>>> round(3.123456, 4)
3.1235
>>> divmod(10, 2)
(5, 0)
>>> divmod(11, 2)
(5, 1)
나머지 연산자
나눗셈을 할 때 나머지 값을 만들어낸다.
나머지 연산자의 기호는 %이다.
>>> apple = 7 / 3
>>> print apple
2
>>> samsung = 7 % 3
>>> print(samsung)
1
나머지 연산자를 활용하여 어떤 숫자를 나눌 수 있는지 없는지 확인할 수 있다.
또 숫자의 가장 오른쪽 숫자를 분리할 때도 유용하다
>>> x = 12345
>>> x % 10
5
>>> x % 100
45
문자열 연산자
기호는 문자열에도 사용할 수 있지만 덧셈은 아니다. 대신 문자와 문자를 결합하는데 사용한다.
>>> apple = "abcd"
>>> samsung = "efg"
>>> print apple + samsung
abcdefg
논리연산자
파이썬에서는 논리 연산자가 3개 있다.
비교연산자
연산자 | 설명 |
---|---|
> | 큼 |
< | 작음 |
>= | 크거나 같음 |
<= | 작거나 같음 |
!= | 같지 않음 |
== | 같음 |
> 예제코드
a > 100 and a < 200
not (x > y)
a % 2 == 0 or a % 3 == 0
비트연산자
연산자 | 설명 | ||
---|---|---|---|
& | 논리곱 연산자로서 비트가 두 항에 모두 나타나는 경우 비트를 결과에 복사함 | ||
\ | \ | 논리합 연산자로서 비트가 두 항 중 어느 곳에 나타나는 경우 비트를 결과에 복사함 | |
^ | 배타적 논리합 연산자로서 어느 한 쪽의 항에만 비트가 존재할 경우 비트를 결과에 복사함 | ||
~ | 부정 연산자로서 비트를 뒤집어서 각 비트에 대하여 정확히 반대를 반환함 |
> 예제코드
>>> 14 & 27
10
>>> 14 | 27
31
>>> 14 ^ 27
21
>>> ~14
-15
>>> ~27
-28
쉬프트 연산자
연산자 | 설명 |
---|---|
x << n | 왼쪽으로 이동 (숫자 x에 2를 n번 곱한 것과 동등함) |
x >> n | 오른쪽으로 이동 (숫자 x를 2로 n번 나눈 것과 동등함) |
>예제코드
# 왼쪽으로 이동, 여기서는 3*2
>>> 3<<1
6
# 3*2*2와 동등함
>>> 3<<2
12
# 3*2*2*2*2*2와 동등함
>>> 3<<5
96
# 오른쪽으로 이동
# 3/2와 동등함
>>> 3>>1
1
# 9/2와 동등함
>>> 9>>1
4
# 10/2와 동등함
>>> 10>>1
5
# 10/2/2와 동등함
>>> 10>>2
2
부울 식
0이 아닌 숫자 모드는 True로 해석한다.
>>> 100 and True
True
>>> -20 and True
True
>>> 0 and True
0
>>> bool(0)
False
>>> bool(-20)
True
>>> bool(100)
True
>>> int(True)
1
>>> int(False)
0
우리가 생각하는 나눗셈하기
# 우선 __future__로부터 division을 가져온다
from __future__ import division
# 우리가 예상한 대로 나눗셈하기
>>> 14/2
7.0
>>> 10/5
2.0
>>> 27/3
9.0
>>> 3/2
1.5
>>> 7/5
1.4
>>> 14/6
2.3333333333333335
일반적인 나눗셈
>>> 14/2
7
>>> 10/5
2
>>> 27/3
9
>>> 3/2
1
>>> 7/5
1
>>> 14/6
2
>>>