CAFE

Python

print() 함수에 서식 넣기

작성자ParkYK|작성시간16.01.08|조회수736 목록 댓글 1

print() 함수에 서식을 줌으로 해서, 출력 결과를 멋지게 만들어 줄 수 있다.

 

방법1 : 문자열 포맷팅 - 파이썬의 `format`은 중괄호 표시의 위치에 주어진 인자들의 값을 치환해 넣음

   format(실수, ‘전체자릿수.소수이하자릿수<서식기호>’)

>>>print(format(123.45678, '10.3f'))

    123.457

>>>print(format(123.45678, '10.3'))   #과학적 표기법으로 출력.

1.23e+02

>>>print(format(123, '10d'))          #정수에 대한 전체 자리수 지정.

           123                           #앞 7자리는 공백으로 채워진다.

    

     중괄호 표시에 다음과 같이 좀 더 상세히 세부사항을 지정가능

     # 소수점 이하 셋째 자리까지 부동 소수점(f) 숫자 표기 (0.333)

     >>>print ('{0:.3f}'.format(1.0/3))

     # 밑줄(_)로 11칸을 채우고 가운데 정렬(^)하기 (___hello___)

     >>>print ('{0:_^11}'.format('hello'))

    # 사용자 지정 키워드를 이용해 (Swaroop wrote A Byte of Python) 표기

     >>>print ('{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python'))

 

방법2 : print('메시지와 출력 서식%(출력자료))

>>>print('서식에 의한 자료 출력 %s %d %f'%('문자열', 5, 23.4))

print('서식에 의한 자료 출력 %s %d %f'%('문자열', 5, 23.4)) 

%와 함께 사용하는 형식 기호(Format Symbol with %) 

변환 (Conversion)

 %c

 문자 (character)

 %s

 str() 메소드를 사용해서 문자열로 변환한 후 formatting

%i 

 부호가 있는 십진법 정수 (signed decimal integer)

 %d

 부호가 있는 십진법 정수 (signed decimal integer)

 %u

 부호가 없는 십진법 정수 (unsigned decimal integer)

 %o

 8진법 정수 (octal integer)

 %x

 소문자의 16진법 정수 (hexadecimal integer, lowercase letters)

 %X

 대문자의 16진법 정수 (hexadecimal integer, UPPERcase letters)

 %e

 소문자 'e'를 사용한 지수 표기 (exponential notation with lowercase 'e')

 %E

 대문자 'E'를 사용한 지수 표기 (exponential notation with UPPERcase 'E')

 %f

 부동소수형 실수 (floating point real number)

 %g

 %f(부동소수형 실수) %e (소문자 'e' 지수 표기) 의 단축형 표기

 %G

 %f(부동소수형 실수) %E(대문자 'E' 지수 표기)의 단축형 표기

 

방법3 : 파이썬 3.x에 추가된 함수

>>>print('이름:{0}, 가격:{1}'.format('마우스', 5000))

이름:마우스, 가격:5000

 

 서식과 대응 자료의 순서 갯수가 일치한 경우 { } 안의 인덱스는 생략이 가능하다

>>>print('이름:{}, 가격:{}'.format('마우스', 5000))

 

 서식과 대응 자료의 순서 갯수가 일치하지 않는 경우는 { } 안의 인덱스를 생략하지 않는다

>>>print('이름:{1}, 가격:{0}'.format(5000, '마우스'))

 

출력 서식보다 대응 자료가 많으면 대응자료의 일부는 무시된다.

>>>print('이름:{0}, 가격:{1}'.format('마우스', 5000, '마우스', 5000))

이름:마우스, 가격:5000

 

출력 서식의 { } 안의 인덱스 순서가 동일한 것이 복수 개 만큼 대응 자료가 출력된다.

>>>print('이름:{0}, 가격:{1} 이름:{0}, 가격:{1}, 가격:{1}'.format('마우스', 5000))

이름:마우스, 가격:5000 이름:마우스, 가격:5000, 가격:5000

 

* print 출력 서식 연습에 대해 부연 설명을 해 본다.

print(format(1.5678, '10.3f'))

print('나는 나이가 %d 이다.'%23)

print('나는 나이가 %s 이다.'%'스물셋')

print('나는 나이가 %d 이고 이름은 %s이다.'%(23, '홍길동'))

print('나는 나이가 %s 이고 이름은 %s이다.'%(23, '홍길동'))

print('나는 키가 %f이고, 에너지가 %d%%.'%(177.7, 100))

print('이름은 {0}, 나이는 {1}'.format('한국인', 33))

print('이름은 {}, 나이는 {}'.format('신선해', 33))

print('이름은 {1}, 나이는 {0}'.format(34, '강나루'))

 

 

방법4 : f-string (파이썬 3.6+)
f-string은 문자열 앞에 f를 붙이고, {} 안에 **변수/식(expression‎)**을 바로 넣어 출력하는 방식이다. 가독성이 좋고 가장 많이 쓰인다.
1) 기본 사용
name = "마우스"; price = 5000; print(f"이름:{name}, 가격:{price}")  # 이름:마우스, 가격:5000

2) 식(Expression‎)도 바로 가능
a = 10; b = 3; print(f"a+b={a+b}, a/b={a/b}")  # a+b=13, a/b=3.3333333333333335

3) 소수점 자리수/폭 지정 (format과 동일한 서식 사용). {값:서식} 형태로 format()의 포맷 사양을 그대로 쓴다.
x = 123.45678;  print(f"{x:10.3f}")   # 123.457
print(f"{x:10.3}")   # 과학적 표기법 가능  1.23e+02
n = 123;   print(f"{n:10d}")    # 123

4) 정렬 / 채움 문자
print(f"{'hello':_^11}");   # ___hello___
print(f"{'hi':*>10}")   # 오른쪽 정렬, *로 채움.   ********hi

5) 퍼센트(%) 출력 : %는 서식문자처럼 해석되지 않으니 그냥 쓰면 된다. 단, %를 “문자 그대로” 강조하고 싶으면 아래처럼 해도 OK.
energy = 100;  print(f"에너지가 {energy}% 입니다.")   # 에너지가 100% 입니다.

6) 천 단위 콤마, 진수, 부호 등
money = 123456789;   print(f"{money:,}")     # 123,456,789
num = 255;  
print(f"{num:b}")       # 11111111 (2진수)
print(f"{num:x}")       # ff (16진수)
v = 7;  print(f"{v:+d}")        # +7

7) 딕셔너리/객체 출력
student = {"id": 1, "name": "홍길동"};  print(f"{student['id']} / {student['name']}")  # 1 / 홍길동

8) 디버깅용: 변수명=값 출력 (=)
x = 10;  y = 20;  print(f"{x=}, {y=}")  # x=10, y=20

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자김정연 | 작성시간 22.11.15 커비!
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼