강의지원 게시판

[프로그래밍 기초] 스트링 포맷 연산자 "%"

프-기
작성자
ASL @ KAU ASL @ KAU
작성일
2015-03-31 00:06
조회
1243
스트링 포맷 연산자 "%"
- 어떠한 문자열을 출력할 때 문자열 내의 어떤 특정한 값을 변화시키기 위해 사용

ex)
1) 구구단
1x1=1
1x2=2
1x3=3
:
1x9=9
이렇게 출력을 하고자 할 때, 이때까지 배운 문법을 가지고 코드를 작성한다면
print(i,"x",j,"=",result)
대부분 이렇게 작성할텐데, 보기도 안 좋고 지저분해 보인다.
따라서 "%" 스트링 포맷팅 연산자를 사용하면
print("%d x %d = %d" % (i,j,i*j))
"~" 와 (~)사이에 있는 "%" 연산자를 기준으로 우측에 있는 값을 좌측에 매핑 시켜서 화면에 출력(print 명령어 때문에)이 된다.
첫 번째 %d 는 i, 두번째 %d 는 j, 세번째 %d 는 i*j
%로 시작하는 갯수와 (~)안에 있는 갯수는 같아야 한다.

그렇다면 %d를 한개만 사용할 때, 어떻게 코드를 작성해야 하는지 궁금하게 될텐데
print("%d is not 369" % num)
이런 형태로 사용하면 된다.

%d에서 d가 의미하는 것이 무엇인지 궁금하게 될텐데,
여기서 d는 decimal의 약자이고, 10진수 형태로 출력하라는 의미 이다.
코드로 보면
i=10.2
i는 현재 type이 float이고
print ("%d " % i)
실행할 경우 i는 float type이지만 10이라는 int type의 값이 출력된다.
print(int(i))
이 코드와 같다고 보면 쉽게 이해될 것이다.

%d 이외에도 %s(string),%f(float),%o(octal),%x(hex),%% 등이 있다.
%o, %x, %%가 낯설텐데,
%o는 임시로 8진수로 바꾸어서 출력하라는 것이고,
%x는 16진수로 바꾸어서 출력하라는 것이다.

마지막으로 %%가 있는데,
%는 스트링 포맷 연산자로 print 괄호 안에 %d(%s,%o,etc)와 함께 사용할 때 %를 화면에 출력하고 싶어서 쓰게 되면
에러가 발생하면서 프로그램이 실행되지 않는다.
%를 스트링 포맷 연산자로 사용하기 때문에 %로 시작하는 것을 하나의 명령어라고 인식을 한다.
%를 스트링 포맷 연산자로 사용하게 되면, %% 이렇게 작성을 해야지 %가 화면에 출력이 된다.
만약에 %를 스트링 포맷 연산자로 사용하겠다고 명시 안 했을 때에는 print("%") 하면 %가 화면에 출력이 된다.

스트링 포맷 연산자 "%" 말고 다른 방법이 있는데, .format()이다.
print("{} is 369".fomat(3000))
"3000 is 369" 이렇게 출력이 된다.
{}안에는 위에 %에서 %d처럼 {:d} 이런 형태가 존재한다.

다양한 형태들이 존재 하니 구글에서 "파이썬 스트링 포맷" 이라고 검색해서 블로그같은 곳에 들어가면 볼 수있다.

P.S. 스트링 포맷을 이용하면 화면에 출력할때 깔끔하게 자리배치 시켜 출력할 수 있을 뿐만 아니라, %d경우 %+d 처럼 사용하게 되면 부호와 함께 출력할 수 있다. 간단하고 알면 유용할 것 같은 부분은 코드로 작성하여 올림.
월요일내로 올려 드린다고 했는데, 검색하고 이해하고 그런다고 많이 늦어졌네요.