Python 포맷 문자열과 지수표기법 문제 풀이(Claude)

2026. 7. 11. 10:40파이썬

📌 문제

다음 python의 프로그램을 분석하여 실행 결과에 대해 작성하시오.

i = 20
f = 123456.789E-3
print('%d\n%d' % (i, i), end = '/')
print('%.3f' % f)

단계별 실행

1행 — i

i = 20

2행 — f

f = 123456.789E-3

E-3은 10의 -3승을 의미합니다.

123456.789 × 10⁻³ = 123.456789

3행 — print('%d\n%d' % (i, i), end = '/')

%d는 정수 포맷, \n은 줄바꿈 문자입니다.

'%d\n%d' % (20, 20)
# → "20\n20"

즉 20 출력 → 줄바꿈 → 20 출력이 됩니다.

여기서 end='/'가 있으므로, print()가 원래 마지막에 붙이는 줄바꿈(\n) 대신 /를 붙입니다.

20
20/

4행 — print('%.3f' % f)

%.3f는 소수점 셋째 자리까지 표시(4번째 자리에서 반올림)합니다.

123.456789 → 123.457

이 print()는 end를 지정하지 않았으므로 기본값인 줄바꿈이 적용됩니다.


✅ 최종 실행 결과

20
20/123.457

⚠️ 함정 포인트

  1. \n은 포맷 문자열 안에서도 줄바꿈으로 작동한다 — '%d\n%d'처럼 중간에 있어도 그대로 줄바꿈됩니다.
  2. end='/'는 그 print문의 "마지막 줄바꿈"만 바꾼다 — 문자열 내부의 \n은 그대로 작동하고, 오직 print가 끝날 때 기본으로 붙는 개행만 /로 대체됩니다.
  3. E-3은 지수 표기법 — 123456.789E-3 = 123456.789 × 10⁻³ = 123.456789
  4. %.3f는 반올림한다 — 123.456789의 4번째 소수점(7)이 5 이상이므로 3번째 자리(6)가 7로 올림됩니다.

🎯 핵심 개념 정리

%d — 정수 포맷

'%d' % 20
# → "20"

\n — 줄바꿈 문자

문자열 어디에 있든 그 위치에서 줄이 바뀝니다.

print("A\nB")
# 결과:
# A
# B

end 옵션

print()는 기본적으로 출력이 끝나면 줄바꿈(\n)을 붙입니다. end를 지정하면 그 문자로 대체됩니다.

print("A", end="/")
print("B")
# 결과: A/B

지수 표기법 (E 또는 e)

숫자 E 지수  →  숫자 × 10^지수
123456.789E-3   # 123456.789 × 10⁻³ = 123.456789
1.5E3           # 1.5 × 10³ = 1500.0

%.Nf — 소수점 N자리 포맷 (반올림)

'%.3f' % 123.456789
# → "123.457"

✍️ 시험 답안용 한 줄 풀이

i는 20, f는 지수 표기법으로 계산하면 123.456789이다. 첫 번째 print는 20을 출력하고 줄바꿈 후 다시 20을 출력하는데, end='/' 때문에 마지막 줄바꿈이 /로 바뀐다. 두 번째 print는 f를 소수점 셋째 자리까지 반올림한 123.457을 출력하므로, 최종 결과는 20, 20/123.457이 각각 다른 줄에 출력된다.


🧠 미니 퀴즈

  1. f = 5E2일 때 f의 값은 무엇일까요?
  2. end='/'를 end=''로 바꾸면 출력은 어떻게 바뀔까요?
  3. '%.3f' % f를 '%.1f' % f로 바꾸면 결과는?
  4. i = 20.7로 바꾸고 '%d' % i를 실행하면 어떻게 될까요?

정답

  1. 500.0 (5 × 10² = 500)
  2. 20 출력 후 줄바꿈 없이 바로 20이 이어져서 → 20\n20123.457, 즉 20, 20123.457이 두 줄로 출력됩니다.
  3. 123.5 — 소수점 둘째 자리(5)에서 반올림되어 첫째 자리까지만 표시
  4. %d는 정수만 받으므로 20.7을 그대로 쓰면 정수부만 잘라 20으로 출력됩니다(파이썬 버전에 따라 타입 오류가 날 수도 있어 실제로는 int(i)로 변환하는 게 안전합니다).