logo
Search검색어를 포함하는 게시물들이 최신순으로 표시됩니다.
    Table of Contents
    [Python] 자료형

    이미지 보기

    [Python] 자료형

    • 21.12.30 작성

    • 21.12.31 수정

    • 읽는 데 10

    TOC

    참고 강의

    SWEA 파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법 #3


    Literal

    소스코드 상에서 내장 자료형의 상수 값을 나타내는 용어

    Literal의 종류

    • 정수형 리터럴 : 15
    • 부동소수점 숫자형 리터럴 : 3.14
    • 문자열 리터럴 : '파이썬'
    • 부울형(Boolean) 리터럴 : True
    • 리스트형 리터럴 : [1, 2, 3]

    type() 함수

    • Literal의 자료형을 확인할 때 사용하는 함수
    • Python은 값에 의해 자료형이 결정되는 동적 타이핑 언어의 성격을 가지기 때문에 자료형의 확인이 필요한 경우가 종종 발생
    >>> type(15)
    <class 'int'> # 정수형
    
    >>> type(3.14)
    <class 'float'> # 부동소수점 숫자형
    
    >>> type('파이썬')
    <class 'str'> # 문자열형
    
    >>> type(True)
    <class 'bool'> # 부울형
    
    >>> type([1, 2, 3])
    <class 'list'> # 리스트형
    

    숫자형

    정수형

    • 5, 10, 0, -3
    • 메모리가 허락하는 한 무한히 긴 숫자도 가능
    • 0o접두어 : 8진수 (ex. 0o177 = 127)
    • 0x접두어 : 16진수 (ex. 0xdeadbeef = 373528559)
    • 0b접두어 : 2진수 (ex. 0b100110111 = 311)
    • 정수형 Literal 내의 '_' 는 무시됨.
      • 100_000_000_000 = 100000000000
      • 0b_1110_0101 = 229

    부동 소수점형

    • 3.14, -10.5
    >>> 10.
    10.0 # 소수부 생략
    
    >>> .001
    0.001 # 정수부 생략
    
    >>> 3.14_159_3
    3.141593 # underbar 무시
    
    • 매우 큰 수와 정밀한 수를 표현하기 위해 지수 표기법 사용 가능
    >>> 1e100
    1e+100
    
    >>> 3.14e-10
    3.14e-10
    
    >>> 0e0
    0.0
    

    허수형

    주의 : Python에서 허수형은 i 대신 j를 사용한다!

    >>> 3.14j
    3.14j
    
    >>> 10.j
    10j # 소수부 생략 가능
    
    >>> .001j
    0.001j # 정수부 생략 가능
    
    >>> 1e100j
    1e+100j # 지수 표기 가능
    
    >>> 3.14_15_93j
    3.141593j # underbar 무시
    
    

    문자열

    • 파이썬은 자료형으로서의 문자형은 제공하지 않음!
    • 길이가 어떻든 문자열로 취급
    • 다행 문자열 ' 또는 " 3개로 범위 묶기
    a = """
    안녕하세요.
    파이썬 프로그래밍을
    시작합니다."
    """
    
    print(a)
    
    
    안녕하세요.
    파이썬 프로그래밍을
    시작합니다."
    

    Escape Sequence

    프로그램 소스 코드 내에서 사용할 수 있도록 백슬래시(\) 기호와 조합해서 사용하는 사전에 정의해둔 문자 조합. 주로 문자열의 출력 결과를 제어하기 위해 사용

    \\

    백슬래시 자체를 출력하고 싶을 때

    >>> print("백슬래시\\")
    
    
    백슬래시\
    

    \', \"

    작은 따옴표나 큰 따옴표 자체를 출력하고 싶을 때

    print('작은 따옴표 \'를 출력합니다.')
    print("큰 따옴표 \"를 출력합니다.")
    
    
    작은 따옴표 '를 출력합니다.
    큰 따옴표 "를 출력합니다.
    

    \n

    라인 피드(LF; Line Feed). 즉, 줄바꿈을 하는 용도로 사용

    \t

    수평 탭(TAB)을 사용할 때 사용한다.

    >>> print("****\t****\t****\n****\t****\t****")
    
    
    ****  ****  ****
    ****  ****  ****
    

    문자열 포맷팅

    문자열 내에 사용된 문자열 표시 유형(문자열 포맷 코드)을 특정 값으로 변경하는 기법 Python은 %-포맷팅, str.format() 함수를 이용한 문자열 포맷팅 제공

    %- 포맷팅을 사용

    • s : 문자열 포맷
    • c : 문자 포맷. 정수를 유니코드 문자로 변환해 출력
    • d : 10진 정수로 출력
    • o : 8진수로 출력
    • x : 16진수로 출력
    • f : 부동소수점 숫자로 출력. 소수점 이하 6자리의 정밀도를 기본값으로 가짐
    • % : % 문자 자체를 출력
    >>> print("이름 : %s" % "홍길동")
    이름 : 홍길동
    
    >>> print("나이 : %s 세" % 20)
    나이 : 20>>> print("결혼 : %s" % False)
    결혼 : False
    
    >>> print("키 : %s cm" % 180.5)
    키 : 180.5 cm
    
    # 2개 이상의 인자를 사용하기 위해 자료구조 tuple()을 사용하는 경우
    >>> print("이름 : %s\n나이 : %s 세" % ("홍길동", 20))
    이름 : 홍길동
    나이 : 20# 2개 이상의 인자를 사용하기 위해 자료구조 dictionary{}를 사용하는 경우
    >>> print("이름 : %(name)s\n나이 : %(age)s 세" % {"name":"홍길동", "age":20})
    이름 : 홍길동
    나이 : 20
    • %c, %d 이용
    >>> print("%c => %d" % (97, 97))
    # %c : 정수를 유니코드 문자로 변환해 출력
    # %d : 숫자를 10진 정수로 출력
    
    a => 97
    
    • %d, %o, %x 이용
    >>> print("%d %o %x" % (10, 10, 10))
    # %o : 8진수 형태로 문자열 변환
    # %x : 16진수 형태로 문자열 변환
    
    10 12 a
    
    • ord() 함수 이용
    >>> print("%s %d %x" % ("가", ord("가"), ord("가")))
    
    가 44032 ac00
    
    • %f 이용
    >>> print("%f %d" % (3.14, 3.14))
    # %f : 소수점 6자리 수까지 표현
    # %d : 소수의 정수부만 표현
    
    3.140000 3
    
    
    # 소수점의 출력 폭 및 정밀도 표현
    >>> "%0.2f" % 3.141593  # 소수점 이하 2자리까지 표시
    3.14
    
    >>> "%10.2f" % 3.141593
    # 소수점 이하 2자리까지 표시
    # 소수점을 포함한 전체 자리수를 10으로 함
    
    '      3.14'  # 좌측에 6개의 공백
    
    >>> "010.2f" % 3.141593
    # 소수점을 포함한 전체 자릿수를 10
    # 소수점 이하 2자리까지 표시
    # 앞의 공백을 0으로 채움
    
    0000003.14
    
    • %% 이용
    >>> print("%d 점은 상위 %d%%에 속합니다." % (98, 1))
    
    98 점은 상위 1%에 속합니다.
    
    • 문자열 출력 폭과 정렬 방향
    >>> print("%10s" % "우측정렬") # 문자열의 폭이 10, 정렬의 방향이 우측
    '      우측정렬'  # 우측정렬 텍스트 4칸과 좌측 공백 6칸
    
    
    >>> print("%-10s" % "좌측정렬") # 문자열의 폭이 10, 정렬의 방향이 좌측
    '좌측정렬      '  # 좌측정렬 텍스트 4칸과 우측 공백 6칸
    

    str.format() 함수

    >>> print("이름: {0}, 나이: {1} 세".format("홍길동", 20))
    이름: 홍길동, 나이: 20# 위치 index를 생략한 경우
    # 순서대로 배치
    >>> print("이름: {}, 나이: {} 세".format("홍길동", 20))
    이름: 홍길동, 나이: 20# 위치 index를 비순차적으로 하는 경우
    # 해당하는 index의 인자를 가져옴
    >>> print("나이: {1} 세, 이름: {0}".format(20, "홍길동") )
    나이: 20세, 이름: 홍길동
    

    format을 지정하는 경우

    >>> print("{0:c} => {1}".format(97, 97))
    # {0:c}는 숫자 97을 유니코드 문자 a(No.97)로 변환
    # {1}은 숫자 97을 그대로 끌고 옴
    
    a => 97
    
    >>> print("{0:f}, {1:.2f}".format(3.14, 3.14))
    3.140000, 3.14
    
    • 이름을 이용하는 경우
    >>> print("이름: {name}, 나이: {age} 세".format(name="홍길동", age=20))
    이름: 홍길동, 나이: 20
    • ord함수를 이용하는 경우
    >>> print("{0}, {1}, {2:x}".format("가", ord("가"), ord("가")))
    # %c % 97 이 97 에 해당하는 유니코드인 a를 도출한다면
    # ord("a")는 a의 유니코드 숫자인 97을 도출하는 반대의 역할
    
    가, 44032, ac00
    
    • 정렬 방향을 지정하는 경우
    >>> print("{0:<10}".format("좌측정렬"))
    # '<'은 정렬의 방향이 좌측임을 의미
    # 10은 문자열의 총 길이가 10임을 의미
    
    '좌측정렬      '
    
    
    >>> print("{0:>10}".format("우측정렬"))
    # '>'은 정렬의 방향이 우측임을 의미
    # 10은 문자열의 총 길이가 10임을 의미
    
    '      우측정렬'
    
    
    >>> print("{0:^10}".format("중앙정렬"))
    # '^'은 정렬의 방향이 중앙임을 의미
    # 10은 문자열의 총 길이가 10임을 의미
    
    '   중앙정렬   '
    
    
    >>> print("{0:*^10}".format("중앙정렬"))
    # '*'은 공백을 채울 문자
    
    '***중앙정렬***'
    
    profile

    FE Developer 박승훈

    노력하는 자는 즐기는 자를 이길 수 없다