연산자
연산자는 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
아래와 같이 연산이 잘 수행된 것을 확인할 수 있다.
이번 시간에는 파이썬의 연산자와 연산에 관련된 실수를 알아봤습니다!
조금은 헷갈리지만 익숙해지겠죠..?

'멋쟁이사자처럼 AI스쿨' 카테고리의 다른 글
반복문(파이썬 강의 Day2) (0) | 2023.01.03 |
---|---|
조건문(파이썬 강의 Day2) (0) | 2023.01.03 |
문자열 데이터 표현과, 변수를 문자열에 삽입하는 방법(파이썬 강의 Day1) (2) | 2023.01.02 |
데이터의 속성값을 출력하는 함수와 얕은 복사, 깊은 복사(파이썬 강의 Day1) (0) | 2023.01.02 |
데이터 타입(파이썬 강의 Day1) (0) | 2023.01.02 |
댓글