1976s
이 블로그는 웹 개발, 프로그래밍, IT 활용법을 다루며, 실용적인 팁과 정보를 제공합니다.
-
recentPost
-
popularPost
-
Archive
-
recentComment
공부/기타
파이썬 숫자, 연산자
그냥 바로 프로그램 시작하려니 막막해서 기초인 숫자와 연산 적어 보기로 하겠습니다. 기초에 기초니 빠르게 훑어보겠습니다.
0. 숫자
항목 | 파이썬 사용예 |
---|---|
정수 | 123, -456, 0 |
실수 | 123.45, -12.456, 3.4e10 |
2진수 | 0b101, 0b01101 |
8진수 | 0o34, 0o25 |
16진수 | 0x2A, 0xFE |
정수형
a = 123
b = -456
c = 0
실수형
a = 1.2
b = -3.45
8진수, 16진수
# 8진수
a = 0p177
# 16진수
b = 0x8ff
c = 0xAB
1. 산술 연산자
=
|
왼쪽 항에서 오른쪽 항을 왼쪽으로 대입(할당)한다.
|
+
|
(숫자) 왼쪽 항에서 오른쪽 항을 더한다.
(문자) 왼쪽 항에서 오른쪽 항을 이어준다.
|
-
|
왼쪽 항에서 오른쪽 항을 뺀다.
|
*
|
(숫자 * 숫자) 왼쪽 항에서 오른쪽 항을 곱한다.
(문자 * 숫자) 혹은 (숫자 * 문자) 문자를 숫자만큼 반복한다.
|
**
|
왼쪽 항에서 오른쪽 항을 거듭제곱한다.
|
/
|
왼쪽 항에서 오른쪽 항으로 나눈다.
|
//
|
왼쪽 항에서 오른쪽 항으로 나눈 값에서 소수점 아래 부분을 버린다.
|
%
|
왼쪽 항에서 오른쪽 항으로 나누고 남은 나머지다.
|
a = 2
b = 5
c = 'Hi'
d = 'world'
print(a + b) # 7
print(c + d) # Hiworld
print(a - b) # -3
print(a * b) # 10
print(a * c) # HiHi
print(c * b) # HiHiHi
print(a ** b) # 32
print(a / b) # 0.4
print(a // b) # 0
print(a % b) # 2
2. 비교 연산자
==
|
왼쪽 항과 오른쪽 항이 같은지 비교한다.
|
!=
|
왼쪽 항과 오른쪽 항이 다른지 대조한다.
|
>
|
왼쪽 항이 오른쪽 항보다 큰지 대조한다. (초과)
|
>=
|
왼쪽 항이 오른쪽 항보다 크거나 같은지 대조한다. (이상)
|
<
|
왼쪽 항이 오른쪽 항보다 작은지 대조한다. (미만)
|
<=
|
왼쪽 항이 오른쪽 항보다 작거나 같은지 대조한다. (이하)
|
a = 7
b = 7
c = 5
d = 1
print(a == b) # True
print(a != c) # True
print(a > b) # False
print(a > d) # True
print(a >= b) # True
print(a >= c) # True
print(a < c) # False
print(a < d) # False
print(a <= b) # True
print(a <= d) # False
3. 논리 · 조건 연산자
not
|
논리형 값을 부정한다.
즉, true는 false가 되고, false는 true가 된다.
|
and
|
'그리고'로 해석된다.
|
or
|
'또는'으로 해석된다.
|
^
|
양 옆의 논리형 값이 서로 다르면 true가 출력된다.
|
B if A else C
|
A가 true이면 B, false이면 C를 실행한다.
|
a = True
b = True
c = False
d = 1
e = 0
print(not b) # False
print(not c) # True
print(a and b) # True
print(a and c) # False
print(a or b) # True
print(a or c) # True
print(a ^ b) # False
print(a ^ c) # True
print(d if a else e) # 1
print(d if c else e) # 0
삼항연산자(Ternary Operator)가 다르군요. 보통 제가 아는것은 '조건식 ? 반항값1 : 반항값2
' 이런식이였는데 여긴 다른다는게 특징 같습니다.
4. 맴버 연산자
in
|
왼쪽 피 연산자의 값이 오른쪽 피
연산자 멤버 중 일치하는 값이 존재 하면 True
|
not in
|
왼쪽 피 연산자의 값이 오른쪽 피
연산자 멤버 중 일치하는 값이 존재 하지 않으면 True
|
my_list = [1, 2, 3, 4, 5]
if 3 in my_list:
# 리스트에서도 사용할 수 있습니다.
print("3이 리스트에 있습니다.")
my_set = {1, 2, 3, 4, 5, 6}
if 7 not in my_set:
# 세트에서도 사용할 수 있습니다.
print("7이 세트에 없습니다.")
my_string = "Hello, World!"
if "Hello" in my_string:
# 문자에서도 사용할 수 있습니다.
print("Hello가 문자열에 있습니다.")
멤버 연산자로 'in
'과 'not in
'이 있습니다. 이러한 연산자는 특정 값이 리스트, 튜플, 세트, 문자열 등의 시퀀스 타입에 속하는지 확인하는 데 사용됩니다.
5. 식별 연산자
is
|
두피 연산자의 식별 값을 비교하였을 때 동일한 객체이면 True
|
is not
|
두피 연산자의 식별 값을 비교하였을 때 동일한 객체이면 False
|
x = [1, 2, 3]
y = x
if x is y:
print("x와 y는 같은 객체입니다.")
z = [1, 2, 3]
if x is not z:
print("x와 z는 서로 다른 객체입니다.")
if x == z:
print("x와 z는 같은 값입니다.")
주의할 점은 is
와 is not
연산자는 값의 동등성(equality)을 확인하지 않습니다. 즉, 두 개의 객체가 같은 값을 가지고 있어도 서로 다른 객체일 수 있습니다. 값의 동등성을 확인하려면 비교 연산자(==
또는 !=
)를 사용해야 합니다.
6. 비트 연산자
~
|
비트를 부정한다.
즉, 0은 1이 되고, 1은 0이 된다.
|
&
|
'그리고'로 해석된다.
|
|
|
'또는'으로 해석된다.
|
^
|
양 옆의 비트 값이 서로 다르면 1이 출력된다.
|
&=
|
& 비트 연산을 하고 대입한다.
|
|=
|
| 비트 연산을 하고 대입한다.
|
^=
|
^ 비트 연산을 하고 대입한다.
|
a = 116
b = 87
print(bin(a)) # 0b1110100
print(bin(~a)) # -0b1110101
print(bin(a & b)) # 0b1010100
print(bin(a | b)) # 0b1110111
print(bin(a ^ b)) # 0b100011
a &= b
print(bin(a)) # 0b1010100 <- a & b 와 같은 값
a = 116 # a 값 초기화
a |= b
print(bin(a)) # 0b1110111 <- a | b 와 같은 값
a = 116 # a 값 초기화
a ^= b
print(bin(a)) # 0b100011 <- a ^ b 와 같은 값
이진수 상태로 출력되어야 비트 연산자의 작동이 한 눈에 보이기 때문에 위의 a
는 10진수이고 이를 bin()
함수를 이용하여 2진수로 변환하면 "0b
" 접두어를 붙인 문자열을 반환해서 출력됩니다.
<<
|
좌항의 비트를 우항만큼 왼쪽으로 이동한다.
|
>>
|
좌항의 비트를 우항만큼 오른쪽으로 이동한다.
|
a = 116
b = 87
print(bin(a)) # 0b1110100
print(bin(b)) # 0b1010111
print(bin(a << 1)) # 0b11101000
print(int(bin(a << 1), 2)) # 0b11101000 의 10진수값 232
print(a << 1) # 232
print(bin(b >> 1)) # 0b101011
print(int(bin(b >> 1), 2)) # 0b101011 의 10진수값 43
print(b >> 1) # 43
6. 할당 연산자
+=
|
왼쪽 항에 오른쪽 항을 더하고 할당한다.
|
-=
|
왼쪽 항에 오른쪽 항을 빼고 할당한다.
|
*=
|
왼쪽 항에 오른쪽 항을 곱하고 할당한다.
|
**=
|
왼쪽 항에 오른쪽 항을 거듭제곱을 구하면서 할당한다.
|
/=
|
왼쪽 항에 오른쪽 항으로 나누고 할당한다.
|
//=
|
왼쪽 항에 오른쪽 항으로 몫을 구하면서 할당한다
|
%=
|
왼쪽 항에 오른쪽 항으로 나눈 나머지를 할당한다.
|
<<=
|
좌항의 비트를 우항만큼 왼쪽으로 이동한 후 할당한다.
|
>>=
|
좌항의 비트를 우항만큼 오른쪽으로 이동한 후 할당한다.
|
a = 2
b = 5
a += b # a = a + b (a = 2, b = 5)
print(a) # 7
a -= b # a = a - b (a = 7, b = 5)
print(a) # 2
a *= b # a = a * b (a = 2, b = 5)
print(a) # 10
a /= b # a = a / b (a = 10, b = 5)
print(a) # 2.0
'%=
' 연산자는 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후, 그 나머지 값을 왼쪽 피연산자에 할당하는 대입 연산자입니다.
예를 들어, 아래의 코드는 변수 x에 7을 할당하고, 그 후 x를 y 값인 3 으로 나눈 나머지 값을 다시 x에 할당합니다.
x = 7
y = 3
x %= y # x = x % y ( 7 / 3 = 2 나머지 1)
print(x) # 1
'**=
' 연산자는 왼쪽 피연산자를 오른쪽 피연산자의 거듭제곱으로 계산한 후, 그 값을 왼쪽 피연산자에 할당하는 대입 연산자입니다.
예를 들어, 아래의 코드는 변수 x에 7를 할당하고, 그 후 x를 y 값인 3 제곱한 값을 다시 x에 할당합니다.
x = 7
y = 3
x **= y # x = x ** y ( x * x * x )
print(x) # 343
'//=
' 연산자는 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후, 그 몫 값을 왼쪽 피연산자에 할당하는 대입 연산자입니다.
예를 들어, 아래의 코드는 변수 x에 7을 할당하고, 그 후 x를 y 값인 3으로 나눈 몫 값을 다시 x에 할당합니다.
x = 7
y = 3
x //= y # x = x //= y ( 7 / 3 = 2.333333333 )
print(x) # 2
자바스크립트에서 자주쓰는 '++
', '--
"은 없는것 같습니다. 대신 '++
' -> '+=1
', '--
' -> '-=1
'로 풀어서 사용하면 될것 같습니다.
a = 116
print(bin(a)) # 0b1110100
print(bin(a << 1)) # 0b11101000
# a 의 값은 변경되지 않습니다.
print(bin(a)) # 0b1110100
a <<= 1
# a = a << 1 로 a 은 변경됩니다.
print(bin(a)) # 0b11101000
쉬프트 이동은 위의 비트 연산자를 보시면 됩니다.
마무리
대체적으로 몇개를 제외하면 자바스크립트와 유사한것 같습니다. 그래도 한번 정리해 보았네요. 몇몇 자료는 잘 사용하지 않아 잃어버렸는데 이번에 정리하면서 배웠습니다.