[파이썬 개념 3] 출력과 입력
프로그램은 값을 받아서(입력) 처리하고 결과를 보여 줍니다(출력). 채점 문제도 모두 이 구조입니다.
채점기는 출력된 글자를 한 글자씩 정답과 비교하므로, 입력과 출력의 모양을 정확히 맞추는 것이 가장 먼저입니다.
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, ...)으로 바꾼다. - 채점에서는 안내 문구를 쓰지 않고, 출력 모양을 문제와 똑같이 맞춘다.
확인 문제
print("A", "B", sep="", end="!")의 출력은?- 입력이
7 8일 때a, b = input().split()다음print(a + b)의 출력은? - 85.25를
f"{85.25:.1f}"로 출력하면 실수 오차 때문에 예상과 다를 수 있습니다. 실제로 돌려 보고, 문제를 만들 때 어떤 점을 조심해야 할지 생각해 보세요.
연습해 보기
- 1006 문자열 이어서 출력하기1
- 1009 구분해서 출력하기
- 1014 f-문자열로 변수 끼워 출력하기
- 1023 한 줄에 입력된 두 값 나누어 받기
- 1024 한 줄에 입력된 두 정수 더하기
- 1112 10년 뒤 나이
확인 문제 정답
AB!(줄바꿈 없음)78: 두 값 모두 문자열이라 이어 붙여집니다.85.2가 나옵니다. 85.25 는 2진수로 정확히 담기는 값이라 '짝수 쪽으로 반올림' 규칙이 적용되기 때문입니다. 소수 자리를 출력하는 문제를 낼 때는 이렇게 딱 반에 걸리는 값을 테스트에 넣지 않는 것이 좋습니다.
댓글 0
로그인하면 댓글을 쓸 수 있습니다.