ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python 실수 포맷팅
    IT 이야기/프로그래밍 언어 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 형태로 붙어서 출력되더라... 이걸 여태 몰랐네

Designed by Tistory.