ls1 = [10, 20, 30, 40]
tp1 = 10, 20, 30, 40
# tp1 = (10,20,30,40) 이와 같이 선언해도 됨
st1 = {10, 20, 30, 40}
print(type(ls1))
print(type(tp1))
print(type(st1))
print(ls1[0])
print(tp1[1])
print(st1[1])
[]로 생성() 사용 또는 괄호 생략 가능{} 로 생성set() 함수 사용해도 됨{} 로 생성| 특성 | list | tuple | set | dictionary |
|---|---|---|---|---|
| 순서 유지 | 유지 | 유지 | X | X |
| 변경 가능성 | 가능 | 불가능 | 가능 | 값만 가능 |
| 중복 요소 | 허용 | 허용 | X | 키는 X, 값은 허용 |
| 접근 방법 | index | index | 값 직접 접근 X | key |

=: 연산자a,10: 피연산자a = 10: 식
- '식'에는 변수, 상수(들), 함수가 포함됨
+: 덧셈-: 뺄셈*: 곱셈/: 나눗셈%: 나머지 → 정수 나누기//: 몫 → 정수 나누기**: 거듭제곱x = 5
y = 2
print(x**y) # 5^2 = 25
==: 두 값이 같으면 True!=: 두 값이 다르면 True>: 왼쪽 값이 크면 True<: 오른쪽 값이 크면 True>=: 왼쪽 값이 크거나 같으면 True<=: 오른쪽 값이 크거나 같으면 Truea = 10
b = 3
print(a>b) # 출력: True
and: 둘 다 참이면 Trueor: 하나라도 참이면 Truenot: 참을 거짓으로, 거짓을 참으로 변환
x = True
y = False
print(x and y) # False
print(x or y) # True
print(not x) # False
=(Assignment Operator): 값 할당 → 할당/대입 연산자+=(Addition Assignment): 더한 후 할당 (a+=5 → a=a+5)-=(Subtraction Assignment): 뺀 후 할당*=(Multiplication Assignment): 곱한 후 할당/=(Division Assignment): 나눈 후 할당%=(Remainder Assignment): 나머지를 구한 후 할당**=(Exponent Assignment)//=: 몫을 구한 후 할당
&: AND|: OR^: XOR~: NOT<<: 왼쪽 시프트>>: 오른쪽 시프트a = 5 # 101(2)
b = 3 # 011(2)
print(a&b) # 001(2) → 출력: 1
print(a|b) # 111(2) → 출력: 7
print(a^b) # 110(2) → 출력: 6
print(~a) # 출력: -6
When a is assigned the value 5, the expression ~a in Python calculates the bitwise NOT of a.
The bitwise NOT operator (~) inverts all the bits of the operand. In Python, integers are represented using two's complement. Therefore, the bitwise NOT of a number x is equivalent to -(x+1).
Given that a is 5, the binary representation of 5 is 00000101.
Applying the bitwise NOT (~) operation to 5:
→ Invert all bits: 11111010
→ Interpret the result as a two's complement number, which is equivalent to -(5+1) = -6.
Therefore, ~a evaluates to -6 when a is 5.
이해를 돕기 위해 10진수로 생각해보기
10진수에는 10의 보수와 9의 보수가 있음
10의 보수: 숫자의 합을 10의 제곱수로 만들어 주기 위해 더해야 하는 수
(각 자릿수의 값을 9에서 빼버리고 1을 더해서 얻을 수 있는 보수)
100(10)에 대한 10의 보수는 899+1 = 900
4(10)에 대한 10의 보수는 6 → 9-4+1
14(10)에 대한 10의 보수는 86 → 99-14+1
9의 보수: 숫자의 합을 '10의 제곱수-1'로 만들어 주기 위해 더해야 하는 수
(각 자릿수의 값을 9에서 빼버리고 얻을 수 있는 보수)
100(10)에 대한 9의 보수는 999-100 = 899
4(10)에 대한 9의 보수는 5 → 9-4
14(10)에 대한 9의 보수는 85 → 99-14
□□□10) 그냥 적고 나머지는 0과 1을 반대로 하면(00110) 완성: 00110(2)| 1의 보수 | 2의 보수 | |
|---|---|---|
| +3 | 011 | 011 |
| +2 | 010 | 010 |
| +1 | 001 | 001 |
| +0 | 000 | 000 |
| -0 | 111 | 000 |
| -1 | 110 | 111 |
| -2 | 101 | 110 |
| -3 | 100 | 101 |
→ 1의 보수에서는 0이 두 개라는 단점이 존재
| 비트 | 양수 | 음수 |
|---|---|---|
| 8 | 0~255 | -128~127 |
| 16 | 0~65535 | -32768~32767 |



10(10)
~를 이용해서 바꿈부호비트(MSB)11110110(2)-10in: 특정 값이 리스트나 문자열에 포함되는지 확인not in: 특정 값이 포함되지 않았는지 확인print('a' in "apple") # True
print(5 in [1, 2, 3, 4]) # False
is: 두 변수가 같은 객체인지 확인is not: 두 변수가 다른 객체인지 확인a = [1, 2, 3]
b = a
print(a is b) # True
print(a is not b) # False
cf.
a = [1, 2, 3] b = [1, 2, 3] print(a is b) # False print(a is not b) # True
()***, /, //, %+, -==, !=, >, <, >=, <=not, and, or# 문제 1
a = int(input("첫 번째 숫자 입력:"))
b = int(input("두 번째 숫자 입력:"))
print(f"덧셈 결과: {a+b}")
print(f"뺄셈 결과: {a-b}")
print(f"곱셈 결과: {a*b}")
print(f"나눗셈 결과: {a/b}")
# 문제 2
x = 10
y = 3
print(x>y)
# 문제 3
num = 8
print(f"num은 2의 배수: {num%2 == 0}")