Python/ETC / / 2023. 4. 15. 01:23

[파이썬 기본 다지기] Python에서 변수를 Print할 때 쓰는 방법들

만약 다음과 같은 변수가 있다고 하자.

a = 1
b = 3
c = "hello"

위와 같은 변수들이 있을 때 각각을 표현하는 방식은 파이썬에 여러가지가 있겠지만, 먼저 가장 기본적인 것부터 소개를 시작하며 어떻게 Print하는지를 알아보려고 한다.

 

C언어의 printf 스타일로 프린트하는 경우

다음과 같은 경우와 같이 사용이 가능하다.

print("%d, %s, %f" % (a, c, a/b))
print("%(decimal)d, %(string)s, %(float)f" % {"decimal": a, "string": c, "float": a/b})

첫번째 줄의 경우부터 살펴 보자면, %의 경우는 식별자의 시작을 알리는 마크라고 볼 수 있다. 이 때 두번째 줄 처럼 네이밍을 지정해줘서, 어느 변수가 어느 자리에 들어갈지 식별해줄 수 있다. 이 때 무조건 d, s, 그리고 s처럼 타입은 명시해야 한다. 여기서 궁금하신 분들이 계실것이다. 과연 어떤 문자를 써야 올바른 타입이 명시되는 것인지 말이다. 다음 표에 정리해 보겠다.

타입표시 부연 설명
d 정수  
i 정수  
o 8진수 만약 0o와 같이 표시를 하려면, 8진수 식별자인 "0o"가 앞에 들어가야 한다.
u 구식 표현 - "d"와 동일하다  
x 16진수 표현 - 소문자 만약 0x나 0X를 표시하기 워한다면 16진수 식별자 앞에 위의 표시가 들어가야 한다.
X 16진수 표현 - 대문자
e 지수 표현 - 소문자 자세하게 표현되는 숫자의 기본 값은 정수 이후 6자리이다.
E 지수 표현 - 대문자
f 유리수 표현
F 유리수 표현
g 유리수 표현, 소문자로 표현, 만약 지수가 -4를 기준으로 정수형 혹은 지수형으로 표현된다  
G 유리수 표현, 대문자로 표현, 만약 지수가 -4를 기준으로 정수형 혹은 지수형으로 표현된다  
c 한자리 문자 - 정수나 한자리 문자열을 받는다  
r 문자열 - repr()로 변환 된 모든 것  
s 문자열 - str()로 변환 된 모든 것  
a 문자열 - 아스키 코드로 변환된 모든 것  

이렇듯 다양한 문자열을 표현할 수 있는 방법이 있다. 여기서 궁금점이 있는 사람들이 있을 것이다. 과연 정수자리에 유리수를 넣으면 어떻게 표현이 될까? 정답은 자동으로 정수로 변환되서 표현된다.

위의 결과를 보면 알다시피 a/b를 %d에 넣었을 경우, 즉 1/3을 넣었을 경우 0으로 즉 정수로 내림 되는 것을 알 수 있으며, %f 자리에 a를 넣었을 경우 소수점 6자리가 표시되는 것을 알 수 있다. 이러한 특징은 파이썬이 동적 타입 언어라서 가능한 것이다. 만약 여기서 소수점을 6자리가 아닌, 10자리 혹은 3자리만 표현하고 싶다면, %0.3f로 넣거나, %0.10f로 넣으면 가능하다. 그렇다면 0.10에서 왼쪽의 0은 무슨 부분일까? 바로 정수 부분의 표시이다. %10.10f을 표시한다면, 정수 자리에 어떻게든 10자리를 표시하겠다는 의미이며 소수점 자리도 10자리를 표시하겠다는 뜻이다.

 

format함수의 사용

print("A = {}, C = {}".format(a, c))
print("A = {a_name}, a/b = {a_b}".format(a_name=a, a_b=a/b))

알다시피 파이썬의 경우 동적 타입 언어이기에 런타임시에 타입이 결정된다. 위의 경우를 살펴보면 먼저 자신이 넣고싶은 자리에 {}를 포함시키고 .format()자리에다가 순서대로 하나씩 넣는 것이다. 이를 통해 전보다 더 편하게 변수를 넣을 수 있게 되었다. 하지만, 이런 경우에도 변수가 많아지면 복잡해진다. 그래서 3.6이후부터 나온 새로운 형식인 f-string방식을 사용하는 것을 나는 강력하게 추천한다.

 

만약 여기서도 유리수의 소수점을 보다 정확하게 표현하고 싶다면 다음과 같이 하면 된다. print("{0:.10f}".format(a/b)), 하나하나 씩 해석해보자면 0:.10f에서 0은 첫번째 변수를 뜻하며 .10f은 소수점 10자리를 의미한다.

 

f-string의 사용

print(f"A = {a}, B = {b}, C = {c}, A/B = {a/b}")

위의 경우를 사용하면 바로 변수의 타입을 굳이 정할 필요 없이 바로 변수를 넣어서 프린트 할 수 있다. 자주 애용하도록 하자.

728x90
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유