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
  • 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
  • 참고




연습문제

1. "다음 중 틀린 것은?

(1) print 'abcd' > 'abd' 답 : True

(2) print (1, 2, 4) < (2, 1, 0) 답 : True

(3) print [1, 3, 2] == [1, 2, 3] 답 : False

(4) print {3:2} < [1,2,3] < (1,2,3) 답 : True




파이썬 연습하기

파이썬 코드를 입력 후 RUN 버튼을 누르세요.