01.수치 자료형
1-1 정수형 상수
1-2 실수형 상수
1-3 Decimal 자료형
02 파이썬 연산자
2-1 산술 연산자
2-2 관계 연산자
2-3 논리 연산자
2-4 비트 단위 연산자
연습문제
코딩 실습
Forum
수치 자료형과 연산자
01. 수치 자료형
1-1 정수형 상수
1 a = 23 # 10진 정수
2 b = 023 # 8진 정수
3 c = 0x23 # 16진 정수
4 print type(a), type(b), type(c)
5 print a, b, c
<type 'int'> <type 'int'> <type 'int'>
23 19 35
1-2 실수형 상수
1 a = 1.2
2 b = 3.5e3
3 c = -0.2e-4
4 print type(a), type(b), type(c)
5 print a, b, c
<type 'float'> <type 'float'> <type 'float'>
1.2 3500.0 -2e-05
파이썬 연습하기
파이썬 코드를 입력 후 RUN 버튼을 누르세요.
1-3 Decimal 자료형
- 컴퓨터의 부동소수점 (Floating point)에 의한 실수 표현은 매우 미미한 오차를 동반함
- 그러한 오차를 최대한 줄이고 최대한 정확한 결과 값을 얻어내기 위해 사용할 수 있는 모듈 -> decimal 모듈
- 다음 두 개의 클래스를 제공
- Decimal: 숫자 자체를 표현
- Context: 정확도나 반올림 방법 등과 같은 환경 설정
1 e = 0.0 # 기본 자료형인 float형 변수 e 생성 및 0.0 값으로 초기화
2 for k in range(10000): # 0부터 9999 까지 만번 반복
3 e += 0.0001 # 0.0001을 누적
4
5 print e # print로는 1.0이 출력됨
6 e
1.0
0.9999999999999062
1 from decimal import *
2 e2 = Decimal('0.0') # 기본 자료형인 float형 변수 e 생성 및 0.0 값으로 초기화
3 delta = Decimal('0.0001') # 누적하려고 하는 0.0001 값을 Decimal 객체인 delta 변수로 생성
4
5 for k in range(10000): # 0부터 9999 까지 만번 반복
6 e2 += delta # delta를 누적
7
8 print e2 # print로는 1.0이 출력됨
9 e2
1.0000
Decimal('1.0000')
- 최근 python 버전에서는 실수에 대한 지수승 지원 (decimal이 아니어도 실수에 대한 지수승 가능)
- Decimal 타입과 기본 실수형에 대한 사칙연산은 에러 발생
1 a = Decimal('35.72') b = Decimal('1.73')
2 print a ** 2
3 a ** b
1275.9184
Decimal('485.8887109649886451686600498')
- ROUND_HALF_UP vs. ROUND_HALF_EVEN
- ROUND_HALF_UP:
- 2.44 -> 2.4
- 2.45 -> 2.5
- 2.46 -> 2.5
- …
- 2.54 -> 2.5
- 2.55 -> 2.6
- 2.56 -> 2.6
- ROUND_HALF_EVEN은 거리가 같은 경우에 마지막의 숫자가 짝수를 유지하도록 함
- ROUND_HALF_EVEN:
- 2.44 -> 2.4
- 2.45 -> 2.4
- 2.46 -> 2.5
- …
- 2.54 -> 2.5
- 2.55 -> 2.6
- 2.56 -> 2.6
- ROUND_HALF_UP:
- Rounding에 대한 참고자료
02 파이썬 연산자
2-1 산술 연산자
1 print 2 ** 3
2 print 5 % -3
3 print 3.0 // 4.0
4 print -3 // 4
5 print 3.0 / 4.0
6 print -3 / 4
7 print -7/4 #단항 연산자(-)의 우선순위가 이항 연산자(/)의 우선순위보다 높다 (-7을 4로 나눈다).
8 print -(7/4) #7/4의 결과에 단항 연산을 수행함
9 print 2 + 3 * 4
10 print --3
8
-1
0.0
-1
0.75
-1
-2
-1
14
3
2-2 관계 연산자
- 객체가 지닌 값의 크기(대소)를 비교함
1 print 6 == 9
2 print 6 != 9
3
4 a = 5
5 b = 10
6 0 < a and a < b
False
True
True
- 서로 다른 자료형간의 크기 관계
- 숫자 < 사전 < 리스트 < 문자열 < 튜플
1 print 9999999999999999999999L < 'abc'
2 print {3:2} < [1,2,3] < (1,2,3)
True
True
1 x = [1,2,3]
2 y = [1,2,3]
3 z = y
4
5 print x == y
6 print x == z
7 print x is y
8 print x is z
9 print y is z
True
True
False
False
True
2-3 논리 연산자 (or 부울 연산자)
- 피연산자의 값으로 진리값인 True 또는 False을 취하여 논리 적인 계산을 수행하는 연산자
- and
- or
- not
- 논리 연산자 자체가 값을 반환하지는 않는다.
- 논리 연산을 따라 최종적으로 평가(Evaluation)되어진 값이 반환된다.
1 a = 20
2 b = 30
3
4 a > 10 and b < 50
True
- 진리값에 해당하는 True와 False는 다른 사칙연산자를 만나면 다음과 같이 평가됨
- True: 1
- False: 0
1 print True + 1
2 print False + 1
3
4 print bool(0) # 정수 0은 거짓
5 print bool(1)
2
1
False
True
- 값이 없는 빈 객체나 None 객체는 False로 평가됨
2-4 비트 단위 연산자
- 비트 단위 조작 지원
- 비트 단위 연산자
- ~ : 비트 반전 (보수)
- <<: 왼쪽으로 비트 이동
- >>: 오른쪽으로 비트 이동
- & : 비트 단위 AND
- ^ : 비트 단위 XOR
-
: 비트 단위 OR
참고: 음수의 표현 (2의 보수 표현법)
- 음수는 leading one 으로 시작함 (양수는 leading zero)
- 만약 정수가 8비트로 이루진다면 “0000 0000”에서 “0111 1111” 숫자는 0에서 127을 나타냄
- 만약 정수가 8비트로 이루진다면 “1000 0000”에서 “1111 1111” 숫자는 -128에서 -1을 나타냄
- [약속] 음수인 -x는 (x - 1)에 대한 1의 보수로 표현 (2의 보수 표현법)
- -x = 1’s complement of (x - 1)
- -1 = (1 - 1)에 대한 1의 보수 = 0에 대한 1의 보수 = “0000 0000”에 대한 1의 보수 = “1111 1111”
- -10 = (10 - 1)에 대한 1의 보수 = 9에 대한 1의 보수 = “0000 1001”에 대한 1의 보수 = “1111 0110”
- -128 = (128 - 1)에 대한 1의 보수 = 127에 대한 1의 보수 = “0111 1111”에 대한 1의 보수 = “1000 0000”
- “1111 1010” = “0000 0101”에 대한 1의 보수 = 5에 대한 1의 보수 = (6 - 1)에 대한 1의 보수 = -6
- “1111 1110” = “0000 0001”에 대한 1의 보수 = 1에 대한 1의 보수 = (2 - 1)에 대한 1의 보수 = -2
- [약속] 음수인 -x는 (x - 1)에 대한 1의 보수로 표현 (2의 보수 표현법)
- 참고
연습문제
파이썬 연습하기
파이썬 코드를 입력 후 RUN 버튼을 누르세요.