728x90
반응형
파이썬의 문자열 포맷팅 방법에는 3가지가 있다.
1. % 포맷팅
greeting = "hello"
print("%s"%greeting)
# hello
% 뒤에 자료형 종류에 따른 알파벳을 붙인 뒤 그 안에 들어갈 값 또한 앞에 %을 붙이는 형식을 사용한다.
자료형 | 문자 |
정수 | %d |
실수 | %f |
문자열 | %s |
8진수 | %o |
16진수 | %x |
2. format 함수
파이썬의 내장 함수인 format()을 사용하는 포맷팅 방법이다.
print("내 이름은 {0}이고 나이는 {1}살 입니다.".format("Tom", 26))
:(콜론)을 사용하여 포맷 형식을 정하려고 할 때에는 다음과 같은 순서를 지킨다.
- 채우기 문자 : 기본은 공백 문자이다.
- 정렬 방식 : <(왼쪽 정렬), ^(가운데 정렬), >(오른쪽 정렬)
- 부호 : +(양수), -(음수)
- 최소 너비 : 전체 문자열의 최소 길이 지정
- 천 단위 구분 기호 : ( , ) 숫자를 천 단위로 구분
- 정밀도 : 부동 소수점 수의 소수점 이하 자릿수를 지정하거나 문자열의 최대 길이 지정
- 타입 : s - 문자열, d - 정수, f - 부동 소수점 수, b - 이진수, o - 8진수, x - 16진수
# 예시
value = 12345.6789
print("{:*^20,.2f}".format(value))
# ****12,345.68****
"""
* : 채우기 문자
^ : 가운데 정렬
20 : 최소 너비
, : 천 단위 구분 기호
.2f : 소수점 이하 2자리 부동 소수점 수
"""
3. f-string 문법
Python 3.6 이상의 버전부터 f-string을 사용할 수 있다. 문자열 앞에 접두사 f를 붙이고, 중괄호 {} 안에 변수를 넣는 것.
dessert = "cookie"
print(f"내가 가장 좋아하는 디저트는 {dessert}이다.")
가장 큰 장점은 자료형의 변환 없이 문자열과 정수를 함께 넣을 수 있다는 점.
< 문제 설명 >
역사, 수학, 컴퓨터 3과목의 성적을 입력 받아 총합과 평균을 구하여
출력 예시와 같이 줄과 칸을 맞추어 출력하는 프로그램을 작성하라.
성적 점수를 ''(공백 문자)로 구분하여 순서대로 입력.
가로 22자 길이를 기준으로 하여 예시와 같이 출력한다. (포매팅 문자 사용)
문자 공백을 일치시키기 위해 고정 길이 글꼴 사용.
< 출력 예시 >

< 풀이 >
# 점수를 입력 받는다.
scores = input("Scores: ")
# 입력받은 점수를 각 변수에 '' 공백을 기준으로 split 하여 담는다.
hist, math, comp = scores.split()
# 입력 받은 값의 자료형이 문자열이므로 계산을 위해 정수형으로 변환해준다.
hist = int(hist)
math = int(math)
comp = int(comp)
total = hist + math + comp
avg = round(total / 3)
print("=" * 22)
print("{:*^22}".format("Report"))
print("{:<15s}{:7d}".format("History:",hist))
print("{:<15s}{:7d}".format("Math:",math))
print("{:<15s}{:7d}".format("Computer:",comp))
print("-" * 22)
print("{:<15s}{:7d}".format("Total Score:",total))
print("{:<15s}{:7d}".format("Avg:",avg))
print("{:*^22}".format("Report"))
- { } → 중괄호는 format( ) 메소드에 전달된 값을 삽입할 위치를 나타냄.
- : → 콜론은 포맷 형식을 지정하는 시작을 나타냄. 콜론 뒤에 오는 문자들은 값의 출력 형식을 정의 함.
- * → 채우기 문자 지정. 기본적으로는 공백으로 채워지지만, *을 지정했으므로 공백 문자 대신 * 문자로 채워짐. 즉, 전체 문자열 길이에서 실제 문자열("Report")의 길이를 뺀 나머지 공간을 * 문자로 채움.
- ^ → 정렬 방식 지정.
- ^ : 가운데 정렬
- < : 왼쪽 정렬
- > : 오른쪽 정렬
- 22 : 전체 문자열의 길이 지정. 출력될 문자열의 총 길이를 22자로 맞춤. 문자열("Report")의 길이가 22자보다 짧다면, 나머지 공간은 채우기 문자(*)로 채워짐.
print("{:<15s}{:7d}".format("Math", math))
- {:<15s} → format의 첫번째 값 "Math"에 대한 포맷 형식을 지정.
- < → 왼쪽 정렬
- 15 → 전체 문자열의 길이
- s → 문자열 형식 의미
- {:7d} → format의 두번째 값 math에 대한 포맷 형식 지정.
- 정렬 값이 지정되어 있지 않다면 기본적으로 오른쪽 정렬( > )이 적용 됨.
- 7 → 전체 문자열의 길이
- d → 정수 형식 의미
파이썬의 format() 함수의 규칙에 따라 문자열은 왼쪽 정렬, 숫자 형식은 오른쪽 정렬이 기본적으로 되므로 위 코드에서 정렬 형식인 (< , >) 등을 생략해도 된다.
728x90
반응형