Python 문자열 포맷 (폭과 정밀도) 문제 풀이(Claude)
2026. 7. 11. 10:50ㆍ파이썬
📌 문제
다음 Python으로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
a = "What's this?"
print("%-10.4s" % a)
print("%10.4s" % a)
단계별 실행
1행 — a
a = "What's this?"
2행 — print("%-10.4s" % a)
%10.4s 형식은 세 부분으로 나뉩니다.
기호 의미
| - | 왼쪽 정렬 (없으면 기본값은 오른쪽 정렬) |
| 10 | 전체 출력 폭(width) |
| .4 | 정밀도(precision) — 문자열을 몇 글자까지 자를지 |
| s | 문자열 포맷 |
정밀도 적용:
a[:4] = "What"
문자열을 앞에서부터 4글자까지만 자릅니다.
폭 적용: "What"(4글자)을 10칸 폭에 맞춰야 하므로, 남는 6칸을 공백으로 채웁니다. -가 있으므로 왼쪽 정렬 → 공백이 오른쪽에 붙습니다.
"What " (What + 공백 6개 = 총 10칸)
3행 — print("%10.4s" % a)
이번엔 -가 없으므로 기본값인 오른쪽 정렬이 적용됩니다. 자르는 것까지는 동일하게 "What".
" What" (공백 6개 + What = 총 10칸)
✅ 최종 실행 결과
What
What
- 1번째 줄: What 뒤에 공백 6칸 (왼쪽 정렬)
- 2번째 줄: 공백 6칸 뒤에 What (오른쪽 정렬)
⚠️ 함정 포인트
- .4는 자릿수 제한(정밀도) — 문자열이 그보다 길면 앞에서부터 4글자만 남기고 자릅니다. "What's this?"의 나머지 부분('s this?)은 출력되지 않습니다.
- 10은 전체 폭 — 자른 결과("What", 4글자)보다 넓으므로 남는 칸은 공백으로 채워집니다.
- -가 있으면 왼쪽 정렬, 없으면 오른쪽 정렬이 기본입니다.
- 공백도 눈에 보이지 않지만 정답의 일부 — 채점 시 공백 개수까지 정확히 맞춰야 합니다.
🎯 핵심 개념 정리
%[플래그][폭].[정밀도]s 포맷 문법
문자열 포맷 = %[-][width].[precision]s
요소 역할 예시
| - (플래그) | 왼쪽 정렬 (생략 시 오른쪽 정렬) | %-10s |
| width (폭) | 전체 출력 칸 수, 부족하면 공백으로 채움 | %10s |
| .precision (정밀도) | 문자열을 해당 글자 수까지만 자름 | %.4s |
예시로 감 잡기
a = "Hello World"
print("%10s" % a) # "Hello World" (10보다 길어서 그대로 출력)
print("%.5s" % a) # "Hello" (5글자로 자름)
print("%10.5s" % a) # " Hello" (5글자로 자르고 10칸 오른쪽 정렬)
print("%-10.5s" % a) # "Hello " (5글자로 자르고 10칸 왼쪽 정렬)
✍️ 시험 답안용 한 줄 풀이
%.4s는 문자열을 4글자로 잘라 "What"을 만들고, %10은 전체 폭을 10칸으로 맞춘다. -가 있으면 왼쪽 정렬("What "), 없으면 오른쪽 정렬(" What")이 되므로 두 줄의 출력은 각각 What 뒤에 공백 6칸, 공백 6칸 뒤에 What이다.
🧠 미니 퀴즈
- "%-10.4s" % a를 "%-6.4s" % a로 바꾸면 결과는 어떻게 될까요?
- .4를 .2로 바꾸면 잘린 문자열은 무엇일까요?
- a = "Hi"로 바꾸고 "%10.4s" % a를 실행하면 결과는?
정답
- "What " — 폭이 6칸이므로 4글자(What) + 공백 2칸만 채워집니다.
- "Wh" — 앞에서부터 2글자만 남습니다.
- " Hi" — "Hi"는 이미 4글자보다 짧아서 정밀도 제한에 걸리지 않고, 2글자를 10칸에 오른쪽 정렬하면 공백 8칸 + Hi가 됩니다.
'파이썬' 카테고리의 다른 글
| Python while 반복문과 f-string 문제 풀이(Claude) (0) | 2026.07.11 |
|---|---|
| 홀수만 더하고 반복문을 빠져나오다(Chatgpt) (0) | 2026.07.11 |
| 네 글자만 남기고, 열 칸에 정렬하기(Chatgpt) (0) | 2026.07.11 |
| Python 클래스 변수와 반복문 문제 풀이(Claude) (0) | 2026.07.11 |
| 도시 이름의 첫 글자로 완성하는 문자열(Chatgpt) (0) | 2026.07.11 |