- 표준입출력(input·print)을 활용하여 사용자와 상호 작용하는 프로그램을 작성할 수 있다.
- 파일입출력(open·read·write)을 활용하여 데이터를 저장하고 불러오는 프로그램을 작성할 수 있다.
- 표준입출력과 파일입출력의 차이를 이해하고 상황에 맞게 활용할 수 있다.
생각 열기 — 입력 → 처리 → 출력, 어디서 봤더라?
1단원 피지컬 컴퓨팅을 기억하나요? 센서(입력) → 마이크로컨트롤러(처리) → 액추에이터(출력).
사실 세상 모든 프로그램이 이 구조예요. 검색창에 단어를 넣으면(입력) 검색 엔진이 찾아서(처리) 결과를 보여 주죠(출력).
지금까지 우리가 만든 프로그램은 데이터를 코드 안에 직접 적었지만(age = 17),
오늘부터는 사용자가 실행할 때마다 다른 데이터를 넣을 수 있는 살아 있는 프로그램을 만듭니다.
게임의 '저장하기'가 없다면 어떨까요? 껐다 켤 때마다 처음부터…😱 프로그램의 변수는 실행이 끝나면 모두 사라집니다. 그렇다면 게임 회사는 내 레벨과 아이템을 어디에, 어떻게 남겨 둘까요? — 오늘 배울 두 번째 주제, 파일입출력이 그 답입니다.
표준입출력 — 키보드로 듣고 화면으로 말하기
input과 print, 그리고 형변환의 함정
표준입출력은 프로그램의 기본 대화 통로예요 — 키보드에서 듣고(input), 화면으로 말합니다(print). 직접 실행해 보세요. 실행을 누르면 입력창이 떠요!
input()이 돌려주는 값은 항상 문자열(str)이에요. 숫자를 입력해도 "17"처럼 따옴표를 두른 채 도착하죠.
계산하려면 반드시 형변환 — int(input()) 또는 float(input())! 아래에서 직접 확인하세요.
위 실행기의 코드를 고쳐 다음 중 하나를 만들어 보세요. (둘 다 만들면 금상첨화!)
- 용돈 계산기: 한 달 용돈과 하루 평균 지출을 입력받아, 며칠 만에 용돈이 바닥나는지 출력 (몫 연산
//활용) - 모둠 평균 계산기: 모둠원 4명의 수행평가 점수를 입력받아 평균과 최고점 출력 (리스트 +
sum(),max()활용 — 4차시 복습!)
파일입출력 — 꺼져도 기억하는 프로그램
변수는 사라지지만 파일은 남는다
변수는 프로그램이 끝나면 사라져요(휘발성). 데이터를 영구히 남기려면
파일입출력이 필요합니다.
파이썬에서는 open()으로 파일을 열고, 쓰고(write), 읽습니다(read). 핵심 약속 세 가지:
① 열기 — open(이름, 모드)
"w" 새로 쓰기(기존 내용 삭제!) / "a" 뒤에 추가 / "r" 읽기
② 쓰기·읽기
f.write(문자열)로 쓰고, f.read() 또는 줄 단위 반복으로 읽어요.
③ 닫기 — with 문
with open(...) as f: 블록을 쓰면 끝날 때 자동으로 닫혀요. 안전!
위 코드에서 ②의 "a"를 "w"로 바꿔 실행해 보세요. 일기의 앞부분이 통째로 사라집니다!
"w"는 기존 내용을 지우고 새로 쓰는 모드이기 때문이죠. 실무에서도 정말 많이 나는 사고예요 —
교과서 안에서 미리 안전하게 겪어 두세요. 😉 (이 실행기의 파일은 브라우저 안 가상 공간에 만들어져서 컴퓨터에는 흔적이 남지 않아요!)
표준입출력 × 파일입출력 — 데이터가 흐르는 프로그램
2단원에서 만난 CSV, 코드로 다루기
2단원에서 공공데이터포털의 CSV 파일(쉼표로 구분된 표 데이터)을 내려받아 봤죠? 이제 그 파일을 코드로 직접 읽고 분석할 수 있습니다. 표준입출력과 파일입출력이 만나면 "사용자에게 묻고 → 파일에서 찾아 → 답해 주는" 진짜 프로그램이 돼요.
위 실행기를 활용해 단계별 미션에 도전하세요.
- 미션 ①: 자신의 이름과 점수를 한 줄 추가하고 평균이 어떻게 변하는지 확인하세요.
- 미션 ②: 최저점을 받은 사람을 찾아 출력하는 코드를 추가하세요. (힌트:
min()) - 미션 ③ (도전): ①번 쓰기 부분을
input()으로 바꿔, 사용자가 입력한 이름·점수를 파일에 추가하는 프로그램으로 업그레이드하세요 — 표준입출력과 파일입출력이 한 프로그램에서 협력하면 성취기준 완성!
| 구분 | 표준입출력 | 파일입출력 |
|---|---|---|
| 상대 | 사용자 (키보드·화면) | 저장 장치의 파일 |
| 데이터 수명 | 프로그램이 끝나면 사라짐 | 영구 보존 |
| 어울리는 일 | 실시간 대화, 즉석 계산 | 기록 누적, 대량 데이터 처리, 프로그램 간 데이터 전달 |
| 대표 함수 | input(), print() | open(), read(), write() |
확인 문제
바로바로 채점! 해설까지 꼭 읽어 보세요.
5차시 확인 문제
4문항 · 즉시 채점
1a = input()에 3을, b = input()에 4를 입력한 뒤 print(a + b)의 결과는?
2기존 일기 파일의 내용을 지우지 않고 뒤에 새 일기를 추가하려면 open()의 모드는?
3파일입출력이 꼭 필요한 상황은?
4with open(...) as f: 구문의 가장 큰 장점은?
더 알아보기
교육과정 너머, 궁금한 만큼 깊이!
심화'표준'입출력이라는 이름의 비밀 — 스트림과 리다이렉션
왜 하필 '표준(standard)'일까요? 운영체제는 모든 프로그램에 세 개의 기본 통로(스트림)를 꽂아 줍니다 — 표준 입력(stdin), 표준 출력(stdout), 표준 오류(stderr). 기본값이 키보드와 화면일 뿐, 이 통로는 방향을 바꿀 수 있어요(리다이렉션).
예를 들어 터미널에서 python score.py > result.txt라고 실행하면, print()의 출력이
화면 대신 파일로 흘러갑니다! 프로그램은 한 줄도 안 고쳤는데 말이죠.
심지어 프로그램A | 프로그램B처럼 A의 출력을 B의 입력으로 직결할 수도 있어요(파이프).
작은 프로그램들을 수도관처럼 이어 큰일을 해내는 것 — 1차시에서 배운 분해의 운영체제 버전이랍니다.
버튼을 눌러 stdout의 방향을 직접 바꿔 보세요 — 프로그램 코드는 그대로인데 출력의 행선지만 달라집니다!
심화한글이 깨지는 이유 — encoding="utf-8"의 정체
예제마다 encoding="utf-8"을 붙인 것, 눈치챘나요? 2단원에서 배웠듯 컴퓨터는 글자를 숫자로 저장하는데,
글자↔숫자 대응 규칙(인코딩)이 여러 가지예요. 쓸 때와 읽을 때 규칙이 다르면 — "뷁뷁�?�" 같은 글자 깨짐이 일어납니다.
UTF-8은 전 세계 문자를 모두 담는 표준 인코딩으로, 웹 문서의 98% 이상이 사용해요.
한글 파일을 다룰 때 encoding="utf-8"을 습관처럼 붙이면 깨짐 사고의 대부분을 예방할 수 있습니다.
(한국어 윈도우의 엑셀이 CSV를 옛 인코딩(cp949)으로 저장하는 경우가 많아, 공공데이터 CSV를 utf-8로 열다 오류를 만나면
encoding="cp949"로 바꿔 열어 보세요!)
UTF-8의 재주는 글자마다 바이트 수를 다르게 쓰는 것 — 버튼을 눌러 직접 확인해 보세요.
3바이트 틀에 끼우면: 11101101 10010101 10011100 = ED 95 9C ✔ (회색 비트가 UTF-8의 '틀')
심화구조를 통째로 저장하고 싶다면 — JSON 맛보기
딕셔너리나 리스트를 통째로 파일에 남기고 싶을 때는 JSON 형식이 표준이에요. 웹 API, 게임 세이브 파일, 앱 설정 — 어디에나 JSON이 있습니다.
게임의 '이어하기'가 어떻게 동작하는지, 이제 원리를 아는 사람이 되었네요!
연계2단원 데이터 수집 × 5차시 — 진짜 공공데이터를 읽어 보자
2단원에서 공공데이터포털의 CSV를 내려받았다면, 이제 그것을 분석할 무기가 생겼어요. 학교 컴퓨터실 파이썬(IDLE)에서 도전해 보세요:
- 공공데이터포털(data.go.kr)이나 기상자료개방포털에서 관심 있는 CSV를 내려받는다.
- 오늘 배운 패턴(
open → 줄 반복 → split(",") → 형변환 → 리스트)으로 읽는다. sum/len/max/min으로 기초 통계를 내고, 2단원에서 배운 '해석 4단계'로 의미를 읽는다.
형식이 궁금하다면 여기서 미리 체험! 진짜 공공데이터 CSV처럼 첫 줄에 헤더(제목 줄)가 있는 파일을 읽어 봅니다.
수집(2단원) → 코드로 분석(3단원) → 시각화·해석(2단원) — 단원들이 하나의 데이터 파이프라인으로 연결됩니다!
한눈에 정리
- 표준입출력:
input()으로 듣고print()로 말한다 — f-string으로 보기 좋게! input()은 항상 문자열을 준다 — 계산 전에int()/float()형변환 필수- 파일입출력:
open(이름, 모드)—"w"새로 쓰기(주의: 기존 내용 삭제!),"a"추가,"r"읽기 with문으로 열면 자동으로 닫혀 안전하다- 변수는 휘발, 파일은 영구 — 기록이 필요한 프로그램의 필수 기술 (CSV 분석까지!)