본문 바로가기
멋쟁이사자처럼 AI스쿨

연산자(파이썬 강의 Day2)

by 헬푸밍 2023. 1. 3.

연산자

연산자는 CPU를 사용하는 방법이다.

- 산술 연산자    

    +(더하기), -(빼기), <  *(곱셈), /(나눗셈), //(몫), %(나머지), < **(제곱)(>는 우선순위)

    데이터(int, str, list, ...)와 데이터를 연산해서 데이터를 출력한다.

data1, data2 = 14, 4
data1 - data2, data1 // data2, data1 % data2, data2 ** 2, data1 ** 0.5

결과를 보면

계산이 잘 된 것을 알 수 있다.

 

    연산자 우선순위(+ - < * / // % < **)

1 + 2 * 3, (1 + 2) * 3

곱셈이 덧셈보더 우선순위에 있는 것을 알 수 있다.

우선순위에 놓으려면 괄호를 사용한다.

 

    데이터 타입에 따른 연산자 사용

d1, d2, d3, d4 = 1, 2, '3', '4'
d1 + d2, d3 + d4, d4 * 5

문자에서 +는 문자와 문자를 연결해주고, *는 곱해준 횟수만큼 문자가 반복된다.

 

    서로 다른 데이터 타입의 연산

아래의 코드와 같이 데이터 타입의 형변환을 사용해 같은 데이터 타입으로 만든 후 연산

d1, d2, d3, d4 = 1, 2, '3', '4'
d1 + int(d3), str(d1) + d3

    추가적인 연산, 형변환

d5, d6 = [1, 2], list('ABC')
d5 + d6, d6 * 2

int(), float(), bool(), str(), list(), tuple(), dict(), set()의 함수로 형변환을 한후 같은 데이터타입끼리 연산!

 

- 할당 연산자

    누적해서 산술연산을 수행

    산술연산자 모두 사용 가능하다.(+= -=  *= /= //= %= **=의 형태로 사용)

data = 10
data += 5
data

data += 5는 data = data + 5와 같은 의미이다.

data에 5를 누적해 연산해준다.

 

- 비교연산자

    ==(같다), !=(다르다), >(크다), <(작다), >=(크거나 같다), <=(작거나 같다)

    데이터와 데이터를 비교해 논리값을 반환한다.

    수식의 연산이 틀리면 False, 맞으면 True를 반환한다.

    조건이 1개일때 주로 사용한다.

d1, d2 = 10, 5
d1 == d2, d1 != d2, d1 > d2

다음과 같이 출력된다.

 

- 논리연산자

    not > and > or(>는 우선순위)

    논리값과 논리값을 비교해 논리값을 반환한다

    조건이 2개 이상일때 사용한다.

 

not

    not False => True

    not True => False

and

    True and True => True

    True and False => False

    False and True => False

    False and False=> False

or

    True or True => True

    True or False => True

    False or True => True

    False or False=> False

코드로 직접 확인해보자!

not False, not(True and False), False or True, (10 > 5) and (10 > 15)

다음과 같이 결과가 반환된다.

 

- 멤버연산자

    in, not in

    컬렉션 데이터에서 특정 데이터가 있는지 확인한다.

    결과는 논리값이다.

코드를 써보면 이렇다.

data = list('ABC')
'B' in data, 'D' in data, 'D' not in data

결과과 논리값으로 나오는 것을 확인해 볼 수 있다.

 

- 실수할 만한 연산

data1, data2 = 0.1, 0.2
(data1 + data2) == 0.3

다음의 코드를 실행하면...

가 출력된다.

이것은 부동소수점 연산 문제로

data1, data2 = 0.1, 0.2
data1 + data2

0.1과 0.2를 더한 값이

이렇게 계산되기 때문이다.

    - 해결방법 1 : 반올림(round())로 해결

data1, data2 = 0.1, 0.2
round(data1 + data2, 1) == 0.3

이렇게 round함수를 이용하면

결과가 잘 출력된다.

 

    -해결방법 2 : 고정소수점 연산

고정소수점 연산을 하려면 decimal 모듈에서 Decimal클래스를 이용해야한다.(단점은 시간이 오래 걸린다.)

from decimal import Decimal
data1, data2 = 0.1, 0.2
print(float(Decimal(str(data1)) + Decimal(str(data2))))
float(Decimal(str(data1)) + Decimal(str(data2))) == 0.3

아래와 같이 연산이 잘 수행된 것을 확인할 수 있다.


이번 시간에는 파이썬의 연산자와 연산에 관련된 실수를 알아봤습니다!

 

조금은 헷갈리지만 익숙해지겠죠..?

댓글