1. % 포맷팅
% 문자를 사용해서 원하는 형식으로 포맷팅하는 방법이다. ' % + 자료형 종류 ' % 값의 형식으로 사용한다.
n = float(input())
print("%f" % n)
# 입력 : 10
# 결과 : 10.0000
자료형별로 어떤 문자를 사용해야하는지 숙지해야한다. 자주 사용하는 자료형을 정리했다.
자료형 | 문자 |
정수 | %d |
실수 | %f |
문자열 | %s |
8진수 | %o |
16진수 | %x |
% | %% |
사용할 때 주의해야하는 점은 명시한 자료형마다 입력값으로 사용할 수 있는 자료형이 정해져있다는 점이다. input() 함수로 입력 받은 문자열을 실수형으로 포맷팅 하려고 하면 아래와 같은 오류가 발생한다.
# 잘못 사용하는 경우
n = input()
print("%f" % n)
# 입력 : 10
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-41-ed5a18cbf51e> in <module>()
1 #11.
2 n = input()
----> 3 print("%f" % n)
TypeError: must be real number, not str
실수형으로 포멧팅하기 위해서는 수 자료형만 입력가능하다. 자료형 별로 사용할 수 있는 입력자료형은 아래와 같다.
자료형 | 문자 | 입력 자료형 |
정수 | %d | 수 자료형(정수, 실수) |
실수 | %f | 수 자료형(정수, 실수) |
문자열 | %s | 문자열, 수 자료형 |
8진수 | %o | 정수형 |
16진수 | %x | 정수형 |
% | %% | 문자 % |
좀 더 다양한 상황에서 사용하는 방법을 정리해보자.
(1) 여러 개의 변수를 사용할 때
a, b = map(int,input().split())
print("%d %d" % (a,b) )
# 입력 : 1,2
# 결과 : 1 2
(2) 자릿수를 지정할 때
N자리로 포맷팅할 때,
정수부 : 0Nd
실수부 : 0.Nf
# 정수부
a, b, c = map(int,input().split('.'))
print('%04d.%02d.%02d' % (a,b,c))
# 입력 : 2020.8.20
# 출력 : 2020.08.20
# 실수부
a = float(input())
print("%0.2f" %)
# 입력 : 1.59245
# 출력 : 1.59
2. format 함수
파이썬의 내장함수인 format()를 사용하여 포맷팅하는 방법이다. %포맷팅처럼 여러개의 값을 포맷팅 할 수 있고, 자릿수를 지정할 수도 있다. 사용하는 방법은 여러가지가 있는데 하나씩 예시를 통해 살펴본다.
(1) 값을 입력하기
print("나는 {0}시 {1}분에 밥 먹을거야".format(7,23))
# 출력 : 나는 7시 23분에 밥 먹을거야
(2) 변수를 입력하기
a, b, c = map(int,input().split('.'))
print('{0:04d}.{1:02d}.{2:02d}'.format(a,b,c))
# 입력 : 2020.8.14
# 결과 : 2020.08.14
(3) 매개변수를 지정하여 입력하기
format()에 입력하는 값의 순서를 내 마음대로 바꿀 수 있다는 장점이 있다.
a, b, c = map(int,input().split('.'))
print('{Y:04d}.{M:02d}.{D:02d}'.format(D=c,Y=a,M=b))
# 입력 : 2020.8.25
# 결과 : 2020.08.25
3. f-string 문법
Python 3.6 이상의 버전부터 f-string 문법을 사용할 수 있다. 사용방법은 문자열 앞에 접두사 f를 붙이고, 중괄호 ({}) 안에 변수를 넣는 것이다.
s = '일'
print(f'나는 하고 싶은 {s}을 하면서 살고싶다.')
# 결과 : 나는 하고 싶은 일을 하면서 살고싶다.
f-string 문법의 가장 큰 장점은 자료형의 번환 없이 문자열과 정수를 함께 넣을 수 있다는 점인 것 같다. 다른 언어와 다르게 파이썬은 문자열과 수 자료형을 더하기 연산자 (+) 만으로 함께 출력하지 못한다.
# 잘못 사용하는 경우
hour = 7
print('나는' + hour + '시에 밥 먹을거야')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-4109babac9b6> in <module>()
1 hour = 7
----> 2 print('나는' + hour + '시에 밥 먹을거야')
TypeError: must be str, not int
이럴 때는 str() 함수를 통해 수 자료형을 문자열로 바꿔주는 작업을 해줘야하는데 f-string 문법을 사용하면 이런 작업 없이 함께 출력이 가능하다.
hour = 7
print(f'나는 {hour}시에 밥 먹을거야')
# 결과 : 나는 7시에 밥 먹을거야
-- 근데,, 자릿수 지정 같은 기능은 못하는듯...?-
파이썬 포맷팅에 관해 상세하게 설명해주신 블로그가 있어서 링크를 걸어둔다!
https://blockdmask.tistory.com/424
'Python' 카테고리의 다른 글
CodeUp 기초 100제 [기초-입출력] 문제풀이 (#1010~#1027) (2) | 2020.11.25 |
---|---|
[Python] 다양한 종류 문자열 출력 (0) | 2020.11.16 |