[Python/TIL] % 양식문자 사용시 주의할 점

 

Today I Learned

1. 양식문자의 필요성

- 출력함수 `print()`를 변수와 문자열을 함께 사용하면 문제점이 있다

x = 123.456789
y = 123
name = "사랑꽃집"
print(a, "의 매출은", y, "만원을 달성했으며,", x, "%의 사업성공률을 자랑한다.")

 

- 보다시피 변수와 문자열 사이에 띄어쓰기가 되어있다.

- 이때 변수와 문자열 사이에 띄어쓰기 없이 문자열에 변수를 삽입해서 작성하고 싶을때 사용한다

 

 

 

2. 양식문자의 사용법

- 양식문자의 사용법 틀은 다음과 같다

number = 50
str1 = "문자열 사이에 삽입하고 싶은 변수타입에 맞게 양식문자%d를 작성합니다." % number
print(str1)

문자열 사이에 삽입하고 싶은 변수타입에 맞게 양식문자5000를 작성합니다.

 

 

 

- 양식문자 순서와 변수의 순서를 매치해준다

float = 123.4
hello = "안녕"
str2 = "변수 여러개를 넣을 때는 이렇게 작성합니다. %s, %f" %(hello, float)
print(str2)

변수 여러개를 넣을 때는 이렇게 작성합니다. 안녕, 123.400000

 

 

3. 양식문자 사용할때 실수하는 부분, 주의점

변수 여러개 일때 소괄호()로 변수 감싸줘야 함

- 내가 사용하다가 이렇게 에러가 자주나서 기록해둔다

- % 양식문자가 한개일때는 ()를 안해도 되지만, 양식문자가 여러개 일때는 ()로 변수들을 꼭 감싸야한다!!

- `%.2f` 는 소수점 두번째 자리까지만 출력한다는 뜻이다

- `%1.4f`는 정수부분을 한자리만 차지한다는 의미이지만 정수가 그 이상이면 그냥 다 출력한다. 

TypeError: not enough arguments for format string
양식문자에 삽입할 인자 개수가 안맞으면 나오는 에러
% 양식문자에 삽입할 변수가 여러개 일때는 소괄호로 감싸지 않으면 인자 개수를 인식 못한다
print("%s의 매출은 %d만원을 달성했으며, %1.4f의 사업성공률을 자랑한다." % name,y,x) #()없음. 에러
x = 123.456789
y = 123
name = "사랑꽃집"

print("%s의 매출" %name)
print("%s의 매출" %(name))
print("%s의 매출은 %d만원을 달성했으며, %.2f의 사업성공률을 자랑한다." % (name,y,x)) #()필수
print("%s의 매출은 %d만원을 달성했으며, %1.4f의 사업성공률을 자랑한다." % (name,y,x))

사랑꽃집의 매출
사랑꽃집의 매출
사랑꽃집의 매출은 123만원을 달성했으며, 123.46의 사업성공률을 자랑한다.

사랑꽃집의 매출은 123만원을 달성했으며, 123.4568의 사업성공률을 자랑한다. 

 

 

- 마지막 출력을 보면 소수점 네번째 자리까지 반올림해서 나왔고 정수는 `%1.4f`라고 해도 정수는 다 출력된다

 

 

문자열과 양식문자 변수 사이에 콤마(,) 사용한 경우 에러

- `print()`함수에서 변수와 문자열을 같이 사용할때 콤마(,)로 연결했던 것 때문에 나도모르게 자연스럽게 양식문자 쓸때도 콤마를 사용해서 에러가 떴다

- 콤마 안 쓴다

SyntaxError: invalid syntax
이건 문법에러다
print("%s의 매출은 %d만원을 달성했으며, %1.4f의 사업성공률을 자랑한다." % , (name,y,x)) #에러
print("%s의 매출은 %d만원을 달성했으며, %1.4f의 사업성공률을 자랑한다." % (name,y,x)) #정상실행