IT 이야기/프로그래밍 언어
Python 실수 포맷팅
비스
2021. 11. 30. 00:14
여태 검색 자유인 코딩테스트만 보다가, 지난주에 처음으로 검색 안되는 코테를 보고 나서 파이썬 문법과 좀 더 친해져야 할 필요성을 느끼게 되었다. 그렇게 시작한 코드업 파이썬 기초 100제에서 다소 생소했던 문법을 하나 찾아 복습겸 포스팅.
코드업 6043번
처음에는 단순하게 아래처럼 round함수를 이용해 코드를 작성했다.
f1, f2 = map(float, input().split())
output = round(f1 / f2, 3)
printf(output)
그런데 이렇게 했더니 통과가 안되는 테케가 나왔다. 문제에서는 output 변수가 실제 소수점 몇 자리인지를 불문하고 무조건 소수점 세자리 형태로 출력되게 하기를 요구했는데, 내 코드는 딱 유효값만을 표시했다.
실제 이 문제의 제대로 된 코드는 아래와 같다.
f1, f2 = map(float, input().split())
output = f1 / f2
print("{:.3f}".format(output))
f1, f2 = map(float, input().split())
output = (f1 / f2)
print(f'{output:.3f}')
둘 중 어느 쪽으로 하더라도 정상작동한다. 10.000과 같은 수는 '실수'를 표시하는 float형태로는 표현할 수 없고, 문자열 포맷팅을 통해 구현해야 한다.
format 함수 사용법
표현하고자 하는 문자열에 {}와 인덱스를 적고, format 함수의 인자로 삽입하고자 하는 문자열 데이터 형태를 넣어주면 된다.
apple = '사과'
banana = '바나나'
grape = '포도'
print("과일바구니: {}, {}, {}".format(apple, banana, grape))
print("과일바구니: {0}, {1}, {2}".format(apple, banana, grape + apple))
print("과일바구니: {2}, {1}, {0}".format(apple, banana, grape))
인덱스를 넣어준다면 인덱스 순서대로, 그리고 인덱스가 없다면 그냥 첫 괄호부터 format 함수에 기재한 순서대로 들어간다.
(+) 여담
print함수에서 요소를 출력할 때 ,로 구분하면 자동으로 띄어쓰기가 한 자 들어가고 +로 구분하면 concat 형태로 붙어서 출력되더라... 이걸 여태 몰랐네