[파이썬 개념 3] 출력과 입력

2026-11-09 21:37 ·수정 2026-11-10 11:45

프로그램은 값을 받아서(입력) 처리하고 결과를 보여 줍니다(출력). 채점 문제도 모두 이 구조입니다.
채점기는 출력된 글자를 한 글자씩 정답과 비교하므로, 입력과 출력의 모양을 정확히 맞추는 것이 가장 먼저입니다.

1. print 의 기본

print("hello")
print(17)
print(3 + 4)
print()
print("빈 줄 다음")

실행 결과

hello
17
7

빈 줄 다음

괄호 안의 값을 계산한 뒤 화면에 보여 주고 줄을 바꿉니다. 괄호 안이 비어 있으면 빈 줄을 출력합니다.

2. 여러 값 출력하기와 sep

쉼표로 나누어 여러 값을 쓰면 사이에 공백 한 칸이 들어갑니다. 사이에 넣을 글자는 sep 으로 바꿀 수 있습니다.

print("a", "b", "c")
print("a", "b", "c", sep="")
print("2026", "11", "21", sep="-")
print("국어", "수학", sep="\n")

실행 결과

a b c
abc
2026-11-21
국어
수학

3. 줄바꿈과 end

print 는 끝에 줄바꿈을 자동으로 붙입니다. 끝에 붙일 글자는 end 로 바꿀 수 있습니다.

print("줄을", end=" ")
print("바꾸지", end=" ")
print("않기")
for i in range(5):
    print(i, end=",")
print()

실행 결과

줄을 바꾸지 않기
0,1,2,3,4,

반복문 안에서 한 줄에 이어서 출력할 때 end 를 자주 씁니다. 마지막에 print() 로 줄을 바꿔 주는 것도 잊지 맙시다.

4. f-문자열

문장 안에 변수 값을 끼워 넣을 때는 따옴표 앞에 f 를 붙이고 { } 안에 변수나 식을 씁니다.

name = "푸름"
age = 17
print(f"{name}의 나이는 {age}살입니다.")
print(f"내년에는 {age + 1}살, 10년 뒤에는 {age + 10}살입니다.")

실행 결과

푸름의 나이는 17살입니다.
내년에는 18살, 10년 뒤에는 27살입니다.

f-문자열을 쓰면 자료형을 신경 쓰지 않고 글자와 수를 섞을 수 있습니다.

형식 지정

{값:형식} 처럼 콜론 뒤에 형식을 붙이면 모양을 정할 수 있습니다.

형식 뜻 예 결과
.1f 소수 첫째 자리까지 f"{85.666:.1f}" 85.7
.2f 소수 둘째 자리까지 f"{3:.2f}" 3.00
, 천 단위 쉼표 f"{1234567:,}" 1,234,567
>5 5칸에 오른쪽 맞춤 f"{42:>5}" 42
<5 5칸에 왼쪽 맞춤 f"{42:<5}" 42
05 5칸, 빈자리는 0 f"{42:05}" 00042
avg = 85.6666
print(f"{avg:.1f}")
print(f"{7:.2f}")
print(f"{1234567:,}원")
for name, score in [("푸름", 95), ("소담", 8)]:
    print(f"{name:<4}|{score:>4}")

실행 결과

85.7
7.00
1,234,567원
푸름  |  95
소담  |   8

문제에 "소수 첫째 자리까지 출력한다"고 되어 있으면 f"{값:.1f}" 를 씁니다. 85 와 85.0 은 채점기에게 다른 출력입니다.

5. input 으로 입력받기

input() 은 키보드나 채점기에서 한 줄을 읽어 돌려줍니다. 이 값은 항상 문자열입니다.

a = input()
b = input()
print(a + b)
print(type(a))

입력

3
4

실행 결과

34
<class 'str'>

3과 4를 넣었는데 7이 아니라 34가 나왔습니다. 문자열끼리 이어 붙였기 때문입니다.
계산하려면 int() 나 float() 로 바꿔야 합니다.

a = int(input())
b = int(input())
print(a + b)

입력

3
4

실행 결과

7

안내 문구에 주의

input("숫자를 입력하세요: ") 처럼 괄호 안에 글자를 쓰면 화면에 안내 문구가 나옵니다.
혼자 실습할 때는 친절하지만, 채점 문제에서는 이 문구도 출력으로 채점되어 틀립니다. 채점 문제에서는 괄호를 비워 둡니다.

6. 한 줄에 여러 값이 있을 때: split

3 5 처럼 한 줄에 여러 값이 있으면 split() 으로 자릅니다. 공백(띄어쓰기, 탭)을 기준으로 잘라 문자열 리스트를 만듭니다.

line = input()
parts = line.split()
print(parts)
print(parts[0], parts[1])

입력

3 5

실행 결과

['3', '5']
3 5

다른 글자를 기준으로 자를 수도 있습니다.

print("39.1,18.7,Adelie".split(","))
print("2026-11-21".split("-"))

실행 결과

['39.1', '18.7', 'Adelie']
['2026', '11', '21']

7. 잘라 낸 값을 한꺼번에 바꾸기: map

split() 으로 잘라 낸 조각은 아직 문자열입니다. map(int, 조각들) 은 조각 하나하나에 int 를 적용합니다.

a, b = map(int, input().split())
print(a + b)
print(a * b)

입력

3 5

실행 결과

8
15

이 한 줄을 풀어 쓰면 다음과 같습니다.

line = input()          # "3 5"
parts = line.split()    # ["3", "5"]
a = int(parts[0])       # 3
b = int(parts[1])       # 5
print(a + b)

입력

3 5

실행 결과

8

값이 몇 개인지 모를 때는 list() 로 감싸 리스트로 받습니다.

nums = list(map(int, input().split()))
print(nums)
print(len(nums), sum(nums))

입력

10 20 30 40

실행 결과

[10, 20, 30, 40]
4 100

8. 여러 줄 입력

줄마다 input() 을 한 번씩 부릅니다. 첫 줄에 개수가 주어지는 경우가 많습니다.

n = int(input())
for i in range(n):
    name, score = input().split()
    print(f"{name}: {int(score) + 5}")

입력

3
푸름 90
소담 85
보람 70

실행 결과

푸름: 95
소담: 90
보람: 75

9. 자주 쓰는 입력 모양 모음

n = int(input())                          # 한 줄에 정수 하나
s = input()                               # 한 줄에 문자열 하나
a, b = map(int, input().split())          # 한 줄에 정수 두 개
x, y = map(float, input().split())        # 한 줄에 실수 두 개
nums = list(map(int, input().split()))    # 한 줄의 정수 여러 개를 리스트로
words = input().split()                   # 한 줄의 단어 여러 개를 리스트로
data = input().split(",")                 # 쉼표로 구분된 한 줄

10. 채점에서 자주 틀리는 출력

실수 예
안내 문구 출력 input("입력: ")
공백과 줄바꿈이 다름 한 줄에 3 5 로 출력할 것을 두 줄로 출력
소수 자릿수가 다름 85 와 85.0, 3.5 와 3.50
쉼표로 인한 공백 print("합계:", 10) 은 합계: 10 (콜론 뒤 공백)
문제에 없는 말 추가 정답은 10입니다 대신 10 만 출력해야 함

정리

  • print(a, b) 는 사이에 공백, 끝에 줄바꿈. sep, end 로 바꾼다.
  • f-문자열 f"{값}" 으로 끼워 넣고, {값:.1f} 로 자릿수를 정한다.
  • input() 은 한 줄을 문자열로 읽는다. 계산하려면 바꾼다.
  • 한 줄의 여러 값은 split() 으로 자르고 map(int, ...) 으로 바꾼다.
  • 채점에서는 안내 문구를 쓰지 않고, 출력 모양을 문제와 똑같이 맞춘다.

확인 문제

  1. print("A", "B", sep="", end="!") 의 출력은?
  2. 입력이 7 8 일 때 a, b = input().split() 다음 print(a + b) 의 출력은?
  3. 85.25를 f"{85.25:.1f}" 로 출력하면 실수 오차 때문에 예상과 다를 수 있습니다. 실제로 돌려 보고, 문제를 만들 때 어떤 점을 조심해야 할지 생각해 보세요.

연습해 보기

확인 문제 정답

  1. AB! (줄바꿈 없음)
  2. 78 : 두 값 모두 문자열이라 이어 붙여집니다.
  3. 85.2 가 나옵니다. 85.25 는 2진수로 정확히 담기는 값이라 '짝수 쪽으로 반올림' 규칙이 적용되기 때문입니다. 소수 자리를 출력하는 문제를 낼 때는 이렇게 딱 반에 걸리는 값을 테스트에 넣지 않는 것이 좋습니다.

댓글 0

로그인하면 댓글을 쓸 수 있습니다.