데이터 분석/파이썬

파이썬 기초 - 연산자 (산술, 할당, 비교, 논리), operator 모듈

김각도 2022. 10. 12. 23:00
반응형

 연산자란 result = data1 + data2 의 코드가 있다고 할 때, =+를 연산자라고 하며, data1data2는 피연산자라고 한다. 연산자의 종류는 다음과 같다.

 

- 산술 연산자: +, -, *, /, %, //, **

- 할당 연산자: =, +=, -=, *=, /=, %=. //=

- 비교 연산자: >, >=, <, <=, ==, !=

- 논리 연산자: and, or, not

 

산술 연산자

 

 %, //, **라는 생소한 기호가 나오는데 이는 각각 나머지, , 거듭제곱을 구하는 연산자다. 나눗셈을 할 때 주의할 점이 있는데 0을 나눗셈하는 경우(0/3) 결과는 항상 0이다. 반대로, 0으로 나누는 경우(3/0) 0으로는 나눌 수 없으므로 오류가 발생한다. 또한, 나눗셈의 결과는 항상 실수(float)로 나타난다.

 

나머지와 몫을 한번에 구할 수도 있는데, divmod() 함수를 사용하면 된다. num1num2로 나누어준다고 했을 때, 아래와 같이 코드를 입력하면 된다.

 

result = divmod(num1, num2)

 

결과는 (n0, n1) 이라고 숫자가 2개 나타나는데 여기서 n0은 몫이고 n1은 나머지이다. 또한, divmod() 함수를 사용했을 때 몫과 나머지를 따로 나타내고 싶다면 아래와 같이 하면 된다.

 

print(‘: {}’.format(result[0])

print(‘나머지 : {}’.format(result[1])

 

**는 거듭제곱을 하는 연산자이지만 이를 활용하여 제곱근을 구할 수도 있다. nm제곱근을 구하려면 아래와 같다.

 

result = 2**(1/2)     # 2의 제곱근

result = 2**(1/3)     # 23제곱근

 

제곱근과 거듭제곱을 구하기 위해서는 아래와 같이 math 모듈의 sqrt()pow() 함수를 사용할 수도 있다.

 

import math

print(‘2의 제곱근 %f’ % math.sqrt(2))

print(‘23제곱 %f’ % math.pow(2, 3))

 

주의할 점은 import math 라는 코드를 작성해야 sqrt()pow() 함수를 사용할 수 있다는 점이고, sqrt() 함수를 이용하여 제곱근을 구할 때는 2제곱근밖에 구할 수 없다. 3제곱근부터는 result = n**(1/3) 의 코드로 구해야 한다.

 

원화로 금액을 나타날 때 숫자 3자리마다 콤마(,)를 넣기 위해 format 함수를 이용하면 깔끔하게 출력할 수 있다.

 

result = format(num, ‘,’)

print(result, ‘’)

 

 이렇게 코드를 작성하면 xxx,xxx원 이라고 출력된다. 주의할 점은 이렇게 작성된 금액은 문자()형으로 바뀌어서 더 이상 숫자로써 사용할 수 없다는 것이다.

 

 

복합 연산자

 

 =은 할당(대입) 연산자인데, +=-= 등 연산자가 두 개씩 붙어있는 경우 복합 연산자라고 한다. 이는 덧셈 연산 후 할당, 뺄셈 연산 후 할당과 같이 앞에 있는 연산자로 연산 후 할당된다는 뜻이다.

 

 

비교 연산자

 

 비교 연산자는 일반적으로 숫자를 비교하지만, 아스키 코드를 이용하면 십진법에 따라 문자도 비교할 수 있다. 아스키 코드란 각 문자마다 이진법, 팔진법, 십진법 등 진법에 따라 숫자를 부여한 표이다. ord()chr() 함수를 사용하면 문자와 숫자를 아스키 코드의 십진법에 따라 변환시킬 수 있다.

 

print(‘\’A\’ -> {}’.format(ord(‘A’))) # ‘A’ -> 65

print(‘65 -> {}’.format(chr(65))) # 65 -> A

 

 문자열끼리 비교하는 경우 == 또는 !=의 연산자만 사용할 수 있다. 주의할 점은 글자가 하나라도 다르면 두 문자열은 서로 다른 문자열로 취급된다는 것이다.

 

 

논리 연산자

 

논리 연산자의 종류로는 and, or, not이 있다. A and BAB 모두 True인 경우만 결과값으로 True가 나타난다. A or B는 둘 중 하나만 True이면 결과 값은 True이다. not AA의 상태를 부정하는 결과를 나타낸다.

 

 

operator 모듈

 

 모듈이란 누군가가 이미 만들어놓은 여러 기능을 뜻한다. 연산자는 operator 라는 모듈을 사용하여 작성할 수도 있는데,  그러기 위해서는 먼저 import operator 이라는 코드를 작성해야만 한다. 관련 함수는 다음과 같다.

산술 연산자 operator 모듈
+ operator.add()
- operator.sub()
* operator.mul()
/ operator.truediv()
% operator.mod()
// operator.floordiv()
** operator.pow()
 
비교 연산자 operator 모듈
== operator.eq()
!= operator.ne()
> operator.gt()
>= operator.ge()
< operator.lt()
<= operator.le()
 
논리 연산자 operator 모듈
and operator.and_()
or operator.or_()
not operator.not_()
 

 

반응형