파이썬의 연산자는 비슷하면서도 다른 연산자를 사용하기 때문에 빠르게 알아보고 가겠습니다.
대입 연산자
a = 10
b = 3.14
c = 'world'
d = False
=는 변수에 값을 대입해주는 연산자입니다.
산술 연산자
산술 연산자는
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
** | 거듭제곱 |
/ | 나누기 |
// | 정수만 표시 나누기 |
% | 나머지 |
예제를 보면서 자세히 보겠습니다.
print(10+3)
print(10-3)
print(10*3)
print(10**3)
print(10/3)
print(10//3)
print(10%3)
나누기 관련해서 자세히 보면
10/3는 자료형을 표시하지 않으면 실수형으로 값을 출력합니다. 그래서 소수점까지 나누기를 합니다.
10//3은 소수점을 버리고 정수만 표시해줍니다.
10%3은 정수까지만 나누고 나머지를 표시해줍니다.
print(int(10/3)) == print(10//3)
자료형을 표시해주게 되면 int(10/3) = 10//3은 결과가 같습니다.
문자열도 더하기와 곱하기를 할 수 있습니다.
print("hello" + "world")
print("hello " * 3)
비트 연산자
>> | 오른쪽으로 시프트 |
<< | 왼쪽으로 시프트 |
~ | NOT |
& | AND |
| | OR |
^ | XOR |
a = 10
b = 13
print(bin(a))
print(bin(b))
print(bin(a >> 1))
print(bin(a << 1))
print(bin(~a))
print(bin(a & b))
print(bin(a | b))
print(bin(a ^ b))
비트 연산자는 비트를 연산해야 하기 때문에 2진수로 연산해야 합니다.
bin(정수)는 입력된 정수를 2진수로 변환해줍니다.
a = 10이고 2진수로 변환하면 0 b1010입니다. b를 2진수로 변환하면 0b1101이 됩니다.
*0b는 2진수를 뜻합니다. 0o는 8진수, 0x는 16진수입니다.
a >> 1은 1010 빨간 부분이 한 칸 지워지는거죠. 자리가 오른쪽으로 1칸씩 이동하게 됩니다.
a << 1은 10100 초록 부분이 한칸 추가됩니다. 자리가 왼쪽으로 1칸씩 이동하게 되면서 오른쪽에 빈자리에 0이 추가됩니다.
~(NOT)은 0을 1로 변경하면 됩니다.
음수가 나오는 이유는 첫 번째 맨 앞 비트는 부호 비트입니다. 0에서 1로 변하기 때문에 음수가 됩니다.
*파이썬에서는 일반적으로는 표시되지 않습니다.
10에서 ~(NOT)로 변경을 해도 -10이 되는 게 아닙니다.
~로 음수가 되면 더해서 0이 되는 비트의 음수 값이 됩니다.
&(AND)는 1&1=1, 1&0=0, 0&1=0, 0&0=0 입니다.
이제 a와 b의 각각 자리를 비교해서 결과를 내면
a & b=1000이 됩니다. 10진수로 변경하면 8이 됩니다.
|(OR)는 1|1=1, 1|0=1, 0|1=1, 0|0=0 입니다.
이걸 이용해서 a|b를 풀면 a | b=1111이 됩니다.
10진수로 변경하면 15가 됩니다.
^(XOR)는 1^1=0, 1^0=1, 0^1=1, 0^0=0 입니다.
a^b=0111이 됩니다. 10진수로 변경하면 7이 됩니다.
복합 대입 연산자
수식을 간결하게 사용할 수 있습니다.
a += 10 => a = a+10
a -= 10 => a = a-10
a *= 10 => a = a*10
a **=2 => a = a**2
a /= 10 => a = a/10
a //= 10 => a = a//10
a %= 10 => a = a%10
a &= 10 => a = a&10
a ^= 10 => a =a^10
a <<= 1 => a =a<<1
a >>= 1; => a =a>>1
관계 연산자
관계 연산자는 ==(같다), !=(다르다), >(크다), <(작다), >=(크거나 같다), <=(작거나 같다)가 있습니다.
print(a == b)
print(a != b)
print(a > b)
print(a < b)
print(a >= b)
print(a <= b)
결과를 True 또는 False로 출력해줍니다.
논리 연산자
논리 연산자는 and, or, not이 있습니다.
a = 10
b = 13
c = 15
print(a < b and a < b)
print((a > b) or (a < c))
print(not(a > b))
print(a < b and a < b)
and는 a and b 라면 a가 True이고 b가 True면 True를 출력 둘 중 하나 또는 둘 다 False면 False를 출력합니다.
a<b는 True, a<c도 True가 출력되기 때문에 a < b and a < b는 True가 출력됩니다.
print((a > b) or (a < c))
or는 a or b라면 a 또는 b 중 하나 이상 True면 True를 출력 둘 다 False면 False를 출력합니다.
a>b는 False, a<c는True가 출력되기 때문에 1개 이상의 True가 나왔으므로 (a > b) or (a < c)는 True가 출력됩니다.
print(not(a > b))
not은 not a라면 a가 False면 True를 출력, a가 True면 False를 출력합니다 (반대로 출력)
(a > b)는 False임으로 True를 출력합니다.
'공부 자료실 > 파이썬(Python)' 카테고리의 다른 글
파이썬(Python) - 리스트 관리 (0) | 2020.07.06 |
---|---|
파이썬(Python) - 리스트(List) (2) | 2020.07.06 |
파이썬(Python) - 반복문 (0) | 2020.07.06 |
파이썬(Python) - 조건문 (0) | 2020.06.19 |
파이썬(Python) - 입력, 출력 (0) | 2020.06.16 |
댓글