파이썬 코딩을 하면서 가장 많이 쓰는 함수 중 하나는 print()이라는 생각이 드는데요, 오늘은 print 함수의 옵션들과 스트링 포매팅을 활용해서 원하는 값을 출력하는 방법에 대해 끄적여보겠습니다.
print 함수로 서로 다른 타입의 변수를 출력하기
일단 아래 예제를 살펴봅시다!
name = 'emma'
age = 100
# print(name + age) # 불가능!
# print(name + str(age)) # 가능!
# print 함수에 sep 라는 옵션에 기본적으로
# 한 칸 띄게 만들기 때문에 자동으로 띄어쓰기 됨
print(name, age)
name 변수는 str 문자형으로, age 변수는 int 숫자형으로 입력했습니다. 현재 주석처리를 해 둔 세번째 줄에서 name + age를 프린트 할 경우 에러(TypeError : can only concatenate str (not "int") to str)가 생깁니다. 이를 해석해 보면 데이터 타입이 다른 두 변수는 결합할 수 없다는 의미입니다.
이를 가능하게 하기 위해서는 두 변수 중 하나의 타입을 변경해 주면 됩니다. 위 예제에서는 age를 스트링 타입으로 변경하기 위해 str(age)로 바꿨고, 이렇게 하니 결과값으로는 'emma100'이 출력됩니다.
sep (separator)
프린트를 하면 한 줄씩 끊어서 나오는데, 내가 원하는 결과는 한 줄로 여러 값을 출력하는 것이라면?
print 함수에 있는 기본적인 sep이라는 옵션을 변경해 주면 됩니다! sep 은 separation의 약자이며, 분리하여 출력하는 문자(구분자)를 지정할 수 있다 생각하면 돼요.
예제로 살펴볼게요 :
print(name, age)
print(name, age, sep=" ")
print('age', age, sep=":")
출력
>>> emma100
>>> emma 100
>>> emma:100
이 때 출력값은 separator로 지정한 문자로 구분되어 출력됩니다.
end
print('I want', end=' ')
print('more coffee')
>>> I want more coffee
end 옵션을 사용하면 지정한 값을 출력 후 줄 바꿈을 하지 않고 지정한 문자열이 출력됩니다. 즉, sep와 비슷하게 구분자를 사용해서 문자열 출력을 한다고 생각하면 됩니다.
문자열 형식화 3 가지 방법
프린트 함수를 사용하다보면 문자열과 변수의 값을 이어서 출력할 때가 많은데, 정석대로 (?) 형식화해서 출력하려면 굉장히 비효율적일 때가 있습니다.
예를 들면:
# 날짜 출력 예시
month = 10
day = 1
# 비효율적인 방법
print(str(month) + '월' + str(day) + '일 입니다.')
이런 식으로 숫자열은 문자열로 바꿔줘야 하고, 손가락은 아프고 오타 나면 골치가 아파지고..
그래서 포맷을 완전 강력 추천합니다. 그전에 비해 코딩하는 시간이 반은 줄어들걸요?
포맷을 하는 방법은 3가지가 있습니다.
f-string 사용하기 (제일 편함!)
첫 번째로는 제가 가장 애용하는 f-string 방법부터 보여드리겠습니다.
format string 방식으로 입력하려면 아래와 같이 print 함수 안에 'f'만 추가해주면 됩니다.
# f string 사용으로 효율적으로!
print(f'{month}월 {day}일 입니다.')
빠르게 타이핑해야 할 때 가장 유용한 것 같습니다. 특히 부트캠프에서 코딩 예제 따라 적을 때 가장 유용한 듯합니다!
% 기호 사용하기
두 번째는 % 기호를 사용하는 것입니다. 그런데 이건 조금 헷갈릴 수 있겠더라고요. 나만 그런 걸 수도
# % values
print('---------------------')
print('name : %s' % name)
print('name : %s \t age : %d' % (name, age))
# f string
print(f"name : {name} \t age : {age}")
위 예제처럼 출력문 부분인 따옴표 안에 %s, %d, %f 로 삽입될 부분을 지정하고 뒤에 %(값)을 붙여주면 됩니다.
- %s : 문자열
- %d : 정수
- %f : 실수
다만 이 방법은 데이터 형태를 미리 지정해둬야 하기 때문에 조금 복잡하고, 나중에 변수의 자료형을 바꾸면 또 고쳐야 하는 번거로움이 있습니다. 그래서 전 사용 안 한답니다 ^^..
.format 사용하기
세 번째 방법은 format 메서드를 사용해서 문자열을 형식화하는 방법입니다. % 기호 대신 {} 기호를 사용하고 자료형을 표시할 필요는 없습니다.
"내 이름은 {}입니다.".format("홍길동")
{} 안에 값의 순서를 지정하는 숫자를 넣을 수도 있습니다. 이렇게 하면 값의 순서를 기억하고 사용하기 때문에 같은 값을 여러 번 출력할 수 있게 됩니다.
"{2}의 {0} 점수는 {1}점입니다. {1}점! {1}점!".format("국어", 100, "amy")
개인적으로 타이핑 빨리 할 수 있고 나중에 코드를 수정하기에도 편한 방법은 print(f'내용')
을 사용하는 첫 번째 방법이라고 생각합니다.
'Data Science' 카테고리의 다른 글
[데이터사이언스: Python] input, output 사용자 입력값 받기, input 함수 예제 (0) | 2023.06.06 |
---|---|
[데이터 사이언스: Python] 산술연산, 비교연산 operations 정리 (0) | 2023.06.06 |
[Python 공부] Data Types (mutable/immutable, set, mapping dictionary) (0) | 2023.06.06 |
[데이터 사이언스: Python] 시퀀스 자료형 Data Type Sequence (str, list, tuple) (0) | 2023.06.06 |
[데이터 사이언스: Python] 자료형의 종류 Data type (None, Numbers, Set, Mapping) (0) | 2023.06.06 |