a , b , c 라는 변수에 각각 의 수를 넣어서
70 minus 30 equals 40. 을 출력해보세요.
a,b,c = 70,30,40
print(a,"minus",b,"equals",c,".", sep=" ")
위의 코드는 충분히 동작하는 코드입니다. 하지만 코드가 그다지 보기가 좋지 않습니다.😂
이럴 때 %연산자를 이용해서 간단하게 코드를 입력 할 수 있습니다.
print("%d minus %d equals %d." % (a,b,c))
😁훨씬 더 깔끔 한가요?
표현식 (a,b,c)는 튜플이며 %로 표현하는 변수가 하나일 경우에만 ()를 생략할 수 있습니다.
또한 다음의 코드처럼 print 함수 인수로 들어간 항목들은 프로그래밍 안에서 별도로 작성 할 수 있습니다.
n= 25+100
fstr = "sum is %d."
print(fstr % n)
의 출력 또한 sum is 125. 입니다.
문자열 포매팅 연산자 %는 두 가지 버전으로 사용할 수 있습니다.
포맷문자열 % 값 <- 값이 한개일 때
포맷문자열 %(여러 값들) <- 값이 1개 혹은 여러 개일 때
코드 | 설명 |
---|---|
%s | 문자열 |
%c | 문자 1개 |
%d | 정수 |
%f | 부동소수 |
%o | 8진수 |
%x | 16진수 |
%% | Literal%(문자%) |
int 변환 기능을 이용하여 16진수 정수로 변환한 'e9'와 '10'을 더하여 16진수로 출력해 보자
h1 = int("e9",16)
h2 = int("10",16)
print("The result is %x,"(h1+h2))
-> The result is f9
🤣h1과 h2 를 감싸고 있는 소괄호 기호는 필수로 존재해야 합니다. 소괄호가 없으면 포매팅을 시도할 때, h1은 포매팅 데이터로 간주하지만 h2는 추가로 이어 붙이려는 숫자로 인식해서 에러를 발생 시킵니다.
포매팅 연산자는 큰 문자열 안에 작은 문자열(%s)를 사용하는 것도 가능합니다.
s = "We are %s, %s, & %s." %("Paul","Steve","Logan")
print(s)
%[-][너비][.정밀도]c
위 문법에서 대괄호 기호로 표기된 항목들은 필수가 아니라 선택적으로 설정하는 값들입니다. 빼기 기호(-)는 출력 필드 안에서 왼족으로 자리 맞춤을 하라는 의미입니다. default는 오른족 자리 맞춤이지만 왼쪽 자리맞춤을 해본다면
print("This is a number: %-6d." %255)
결과는 위의 사진처럼 왼쪽 자리 맞춤을 위해 255 와 . 사이에 3개의 빈칸이 생겨서 출력되게 됩니다.
만약 테이블을 출력하기에 앞서 필요한 최대 너비를 구하고, 그 값을 원하는 너비로 설정한 후 모든 출력 필드를 동일한 길이로 출력하고 싶다면 어떻게 해야될까요?🧐
변수-너비 필드를 만들려면 일반적으로 고정 너비를 명시하는 정수 위치에 별포 기호(*)를 넣어서 만들 수 있습니다.
"here is a number: %*d" % (3,6)
위의 튜플에서 첫번째 항목은 출력 필드의 너비이고, 두 번째 항목은 출력할 데이터 입니다.
🤗문자열 또한 출력이 가능합니다.
"here is a number: %*s" % (10,"MAX")
위의 기능을 이용해 처음 말햇던 필드 길이를 지정 할 수 있습니다.
n = 8
print("Item 1: %*s, Item2 : %*s" %(n,"D.va",n,"May"))