공부 자료실/파이썬(Python)

파이썬(Python) - 연산자

자료수집중 2020. 6. 17.
반응형

파이썬의 연산자는 비슷하면서도 다른 연산자를 사용하기 때문에 빠르게 알아보고 가겠습니다.

 

대입 연산자

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가 TrueTrue를 출력 둘 중 하나 또는 둘 다 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를 출력합니다.

 

댓글