줄바꿈 뒤에 /를 붙이고, 실수를 반올림하라(Chatgpt)

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

지수 표기법과 Python 출력 형식 분석


1. 문제

다음 Python 프로그램을 분석하여 실행 결과를 작성하시오.

i = 20
f = 123456.789E-3

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

2. 주요 포인트

이 문제에서는 다음 내용을 확인해야 합니다.

① 지수 표기법 E-3

123456.789E-3

E-3은 앞의 수에 (10^{-3})을 곱한다는 의미입니다.

123456.789 × 10⁻³

즉, 소수점을 왼쪽으로 세 칸 이동합니다.


② 정수 출력 형식 %d

'%d' % i

%d는 정수를 출력할 때 사용하는 형식 지정자입니다.


③ 줄바꿈 문자 \n

'%d\n%d'

\n은 출력 위치를 다음 줄로 이동시키는 줄바꿈 문자입니다.


④ end='/'

일반적인 print()는 출력이 끝난 후 줄을 바꿉니다.

하지만 다음과 같이 end를 지정하면 줄바꿈 대신 /를 출력합니다.

print(..., end='/')

⑤ 소수점 자릿수 %.3f

'%.3f' % f

실수를 소수점 아래 세 자리까지 출력합니다.

넷째 자리에서 반올림됩니다.


3. 풀이

3-1. 변수 i 확인

i = 20

따라서 변수 i에는 정수 20이 저장됩니다.

i = 20

3-2. 변수 f 계산

f = 123456.789E-3

E-3은 (10^{-3})을 의미하므로 다음과 같이 계산합니다.

123456.789 × 10⁻³

소수점을 왼쪽으로 세 칸 이동하면 다음과 같습니다.

123456.789
      ↓
123.456789

따라서 변수 f의 값은 다음과 같습니다.

f = 123.456789

3-3. 첫 번째 출력문 분석

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

서식 문자열에는 %d가 두 개 있습니다.

'%d\n%d'

두 개의 %d에 각각 i의 값 20이 들어갑니다.

'%d\n%d' % (20, 20)

첫 번째 %d가 출력된 뒤 \n에 의해 줄을 바꾸고, 두 번째 %d가 출력됩니다.

20
20

그러나 print()의 끝에 다음 옵션이 있습니다.

end='/'

따라서 두 번째 20을 출력한 뒤 줄을 바꾸지 않고 /를 붙입니다.

현재까지 출력된 결과는 다음과 같습니다.

20
20/

3-4. 두 번째 출력문 분석

print('%.3f' % f)

변수 f의 값은 다음과 같습니다.

123.456789

%.3f는 소수점 아래 세 자리까지 출력합니다.

123.456789
       ↑
소수점 넷째 자리: 7

소수점 넷째 자리가 7이므로 셋째 자리인 6을 올림합니다.

123.456 → 123.457

따라서 두 번째 출력문은 다음 값을 출력합니다.

123.457

첫 번째 출력문이 / 뒤에서 줄을 바꾸지 않았으므로 같은 줄에 이어서 출력됩니다.

20/123.457

4. 실행 흐름 한눈에 보기

i = 20
f = 123456.789E-3
  = 123456.789 × 10⁻³
  = 123.456789

첫 번째 출력문:

%d      → 20
\n      → 줄바꿈
%d      → 20
end='/' → /

두 번째 출력문:

123.456789
     ↓ %.3f
123.457

5. 정답

20
20/123.457

6. 시험에서 주의할 함정

E-3은 3을 빼는 것이 아닙니다

123456.789E-3

잘못된 해석:

123456.789 - 3

올바른 해석:

123456.789 × 10⁻³

\n과 end는 서로 다른 위치에서 작동합니다

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

\n은 문자열 중간에서 줄을 바꾸고, end='/'는 전체 출력이 끝나는 위치에 /를 붙입니다.

따라서 다음처럼 출력됩니다.

20
20/

%.3f는 단순히 뒤를 자르는 것이 아닙니다

'%.3f' % 123.456789

소수점 아래 세 자리까지 표현하면서 넷째 자리에서 반올림합니다.

123.456789 → 123.457

7. 시험 풀이 요약

i에는 20이 저장된다.

123456.789E-3은
123456.789 × 10⁻³이므로 123.456789이다.

첫 번째 print문은 20을 출력한 후 \n으로 줄을 바꾸고,
다시 20을 출력한 뒤 end='/'에 의해 /를 붙인다.

두 번째 print문은 123.456789를 소수점 셋째 자리까지
반올림하여 123.457을 출력한다.

따라서 최종 출력 결과는 다음과 같다.

20
20/123.457