Python

Python(6) 연산

UserDonghu 2023. 9. 11. 18:19

산술연산자

연산 안되는거 주의

{'one':1} + {'two':2} # Error
{5} + {6} # Error

 

거듭제곱 우선순위 주의

-2 **2 # -4

 

// 연산자는 몫이 아님. 내림임.

a = -5
b = 2
print(a // b) # -3

 

부동소수점 주의

10 % 3.3 # 0.10000000000000053

# 10의 제곱수를 곱해서 해결.
(100 % 33) / 10 # 0.1 소숫점 첫째자리 까지

(1000 % 331) / 100 # 0.07 둘째자리 까지

 

비교연산자

문자는 유니코드 기준으로 비교

print('apple' < 'banana') # True b가 a보다 유니코드에서 뒤에 있음

print('hello' < 'hell o') # False o가 공백보다 유니코드에서 뒤에 있음

 

동시에 비교 가능

x = 10
5 < x < 15 # True

 

배열에서 맨 앞 인덱스부터 비교, 같으면 다음 인덱스 비교

[10, 20, 30] > [20, 30, 40] # False 10 < 20

 

논리연산자

이미 True나 False가 정해져 있다면 뒤에를 안봄.

a = True
b = False
a and b and ccc and ddd # 이미 b가 False 이므로 뒤에 ccc와 ddd 라는 없는 변수를 넣어도 실행된다.
# False

a = True
b = False
a or b or asdf or asdf # 마찬가지로 a가 True라서 뒤에는 안봄.

 

and 연산을 먼저 하고 or 연산을 함.

a = True
b = False
c = False
d = True

a and b or c and d
#(a and b) or (c and d) False


a = True
b = False
c = False
d = True

a and not b or c and d
# (a and (not b)) or (c and d) True

 

단락회로평가

a = 'hello'
b = ''
print(a or b) # a가 True 이므로 뒤를 안보고 바로 hello.

a = ''
b = 'world'
print(a or b) # world a가 False라서 뒤까지 봄.

username = 'nickname'
username = username or '이름을 정하지 않았습니다.'
# username이 비었으면 이름을 정하지 않았습니다.

 

 

할당연산자

x /= 1
x //= 1
x **= 1
x *= 1
x %= 1

 

id 연산자, is 연산자, is not 연산자

is 는 주소값을 비교.

a = 10000
b = 10000
print(a is b) # False

print(id(a), id(b)) # (137880992029264, 137880992034352)

a = [1, 2, 3]
b = [1, 2, 3]
print(a is b) # False 주소값이 다름.

 

in 구문

주의) is 는 is not 이고, in 은 not in

10 in [10, 20, 30] # True

'h' in 'hello world' # True

'hell' not in 'hello world' # False

'wolf' not in 'hello world' # True

a = {'key1': 'value1', 'key2': 'value2'} #딕셔너리
b = {10, 10, 20} # set
10 in b # 출력: True
{10} in b # 출력: False, 주의
{10, 20} in b # 출력: False, 주의

'key1' in a # 출력: True
'value1' in a # 출력: False 밸류값으로는 in 불가
('key1', 'key2') in a # 출력: False
{'key1':'value1'} in a # error

 

연산자 우선순위

-2 ** 2 # -4

True * True and True + False # 1
# ((True * True) and (True + False))

# 복합 할당 연산자가 가장 나중!
a = 10
a += 10 * 100
a

a = 10
a *= 10 + 100
a

'Python' 카테고리의 다른 글

Python(8) 리스트  (0) 2023.09.12
Python(7) 함수  (0) 2023.09.12
Python(5) 메서드 체이닝, 형변환  (0) 2023.09.11
Python(4) 논리 자료형, None 자료형  (0) 2023.09.11
Python(3) 문자열 자료형  (1) 2023.09.08