본문 바로가기
SK 행복성장캠퍼스/Python 기초

0831_1일차_Python04_포멧출력

by NickNuma 2020. 9. 2.

포멧 출력... 음..
이거 쓰기 전까지는 format() 함수 이용한 출력이라 포멧 출력인갑다. 생각했는데...

포멧 출력어떤 형식에 맞춰서 "문자열"만 출력하는게 아니라 "문자열"과 함께 {변수}나 {데이터}를 출력할 수 있게 해주는 출력 형식을 이야기하는 것 같다.

강사님께서 포멧 출력이 뭔지 써주시긴 했는데 정말 호로록 넘어가서 지금까지 정확히 생각을 못 하고 있었던 듯.

"""
    포멧 출력
        내용 : print 출력시 특정 형식을 맞춰서 출력

    방법 :
        가. " ".format() 함수   (최신 방식)
            help('FORMATTING')

        나. " " % 형식          (예전 방식)
            "%s %d %f %c" % (value1, value2, value3, value4)

            %s : String 문자열
            %d : Decimal 정수
            %f : Floating number 실수
            %c : Character 문자        

        다. f" " 형식  ( format string, 잘 안 쓰임 )

"""

앞서서 포스팅한 print() 함수를 이용한 표준 출력과 같으면서 다른, 조금 복잡한?! 출력 방법입니다.

일단 포멧 출력크게 3가지로 나뉘는데요.

1. 최신 방식인 " ".format()함수를 이용하는 방법
2. 예전에 쓰던 방식인 " " % 를 이용하는 방법
3. 잘 사용되지 않는 f" ", format string이 있습니다.

오늘은 3가지 모두 다뤄보도록 하겠습니다.

 


먼저 요즘 가장 많이 쓰이는 방식" ".format() 입니다.

먼저 위치값을 이용한 format() 함수, 포멧 출력 방법입니다.

# 출력포멧 : 이름 : 홍길동, 나이 : 20
# 출력포멧 : 이름 : 이순신, 나이 : 30

# *** 위치값 이용 .format( 위치값 )***

# 1. " {}, {}".format(값, 값2) 함수
print("이름: {}, 나이: {}".format("홍길동", 20))
print("이름: {}, 나이: {}".format("이순신", 30))   ## 위치값을 지정하지 않으면 1:1 대응이 되야함

# 2. " {0}, {1}".format(값, 값2) 함수, 위치값 지정
print("이름: {0}, 나이: {1}".format("이순신", 30)) ## 위치값 지정
print("이름: {0}, 나이: {1}, 나이2 : {1}".format("이순신", 30))  ## 위치값 지정시에는 1:1대응이 필수가 아님

format() 함수의 기본 사용방법
데이터를 넣고자 하는 위치{ } 중괄호를 넣고 뒤에 .format("데이터")를 써주는 것입니다.
문법 (Syntax) :   "이름 : {}".format(value("str"))
print("이름: {}, 나이: {}".format("홍길동", 20))        {} 안에 값을 지정하지 않으면 {}와 데이터는 1:1 대응이 되야합니다.
{} 중괄호 안에 위치 값을 지정해주면 1 : 1 대응은 필수가 아닙니다.
print("이름: {0}, 나이: {1}, 나이2 : {1}".format("이순신", 30))

위 코드는 이렇게 출력됩니다.


 


다음으로는 키 값을 이용한 format() 함수, 포멧 출력 방법입니다.

# *** 키값 이용 .format( 키값 )***

# 1. " {key}, {key2}".format(key=vaule, key2=vaule) 함수
print("이름: {username}, 나이: {userage}".format(username = "홍길동", userage = 20))

# 2. 위치값과 키 값 혼합
print("이름: {}, 나이: {userage}".format("홍길동", userage = 20))  # 기본 포멧출력 + 키 값
print("이름: {0}, 나이: {userage}".format("홍길동", userage = 20)) # 포멧출력 위치값 + 키 값

format 뒤에 딕셔너리(dict)처럼 key와 value값을 넣어주고 문자 출력부의 {}출력할 데이터의 key값을 줍니다.
문법 (Syntax) :    "이름 : {name}".format( name = value ("str") )
print("이름: {username}, 나이: {userage}".format(username = "홍길동", userage = 20))

위 코드는 이렇게 출력됩니다.


 


format() 함수를 이용한 포멧출력의 마지막, 수치 데이터 표현입니다.
일단 수치 데이터(정수 int, 실수 float)는 기본 방식과 동일하게 사용 가능합니다.
추가적으로 수치 데이터정수형, 혹은 실수형 그리고 소수점 자리수, 공백 등의 출력을 조절할 수 있습니다.

# *** .format() 함수를 이용한 수치 데이터 표현 ***

# 1. " {}, {}".format() 함수
print("값:{}".format(987654321))
print("값2:{}".format(987654321))
print("="*40)
print("값3:{0:f}".format(987654321))     #{0:f} 0번째 튜플을 float형식으로 출력   #987654321.000000
print("값4:{0:.2f}".format(987654321))   #987654321.00	#소수점 자리를 2자리만 표현합니다.
print("="*40)
print("값5:{0:.2f}".format(98765.04321)) #987654321.00
print("="*40)
print("값6:{0:d}".format(9876))
print("값7:{0:10d}".format(9876))	# 전체 길이를 10을 주고 오른쪽으로 정렬합니다. 
print("="*40)
print("값8:{0:,}".format(987654321))     # 화폐로 가정하여 000,000,000로 표현합니다.

위 코드는 이렇게 출력됩니다.


 


다음으로는 예전에 사용하던 " " % 방식입니다.
데이터를 넣고자 하는 위치에 데이터 형식에 맞춰 %s, %d, %f, %c를 선택하여 넣고 뒤에 %("데이터")를 써주는 것입니다.
문법 (Syntax) :   "이름 : %s " % ("value(Str)")

"""
	포멧 출력
        내용 : print 출력시 특정 형식을 맞춰서 출력
        
        나. " " % 형식          (예전 방식)
            "%s %d %f %c" % (value1, value2, value3, value4)
            
            %s : String 문자열
            %d : Decimal 정수
            %f : Floating number 실수
            %c : Character 문자
"""            

# 1. " " % 형식
print("이름 : %s, 나이 : %d, 키 : %.2f, 성별 : %c " %("홍길동", 20, 167.43,"M"))
print("이름 : %4s, 나이 : %-3d, 키 : %.2f, 성별 : %c " %("홍길동", 20, 167.43,"M"))

위 코드는 이렇게 출력됩니다.


 


마지막으로 변수를 사용할 때 Format String.format()함수" "% 표현법의 사용 방법입니다.

먼저, .format() 함수" " % 표현법 역시 변수와 함께 사용할 수 있습니다.
문법 (Syntax) :     "제목 : { }".format(변수명)"
문법 (Syntax) :     "제목 : %x" % (변수명)"

그리고 Format string아주 가끔 쓰인다고 합니다.
문법 (Syntax) :    f"제목 : {변수명}"

# 변수 사용 ==>일반적 사용 방식
name = "홍길동"
age = 20

# format string ==> f" "       # 아주 가끔 쓰임, 잘 안 쓰임
print("이름: {name}, 나이: {age}")
print(f"이름: {name}, 나이: {age}")

print("이름: {}, 나이: {}".format(name, age))
print("이름 : %s, 나이 : %d" % (name, age))
print("="*40)

위 코드는 이렇게 출력됩니다.


 

하루 8시간을 매일 하다보니까... 밀린게 넘나 많아서... 글을 쓰면서 내가 잘하고 있는지 어쩐지 판단할 새도 없습니다.. 하하..
쨋든. 이렇게 표준 출력을 마치고~ 또 다음 포스트를 적어보도록 하겠습니다.

그럼 이만~~
(아 뭔가... 허전한 느낌이라.. 이번 포스팅은 죄송할뿐입니다... 언제 시간 남으면 조금 다듬어 보도록하지요.)

반응형

댓글