TEACHER / UNIT 01
Ⅰ. 모듈과 패키지 활용 · 수업 요약
교과서 6–39쪽 · 도식 → 시연 → 학생 실험 → 설명 확인
50분 수업 운영 제안
| 단계 | 시간 | 교사 확인 |
|---|---|---|
| 도입·결과 예상 | 5분 | 정답 전에 입력·출력 예상 받기 |
| 구조 설명·시연 | 10분 | 도식과 코드의 각 부분 연결 |
| 학생 코드 변형 | 25분 | 정상·경계·오류 조건 확인 |
| 설명·저널 | 10분 | 결과 이유와 수정 근거 확인 |
평가 연결
| 항목 | 관찰할 증거 | 배점/연결 |
|---|---|---|
| 연결 수행 | 1·2단원 기능 모듈과 GUI를 함께 확인 | 수행①과 연결 |
교과서 대조·지도 유의사항
- 교과서 39쪽 마지막 출력은 subnum(7,2)에 따라 5입니다. 정답편 201쪽의 9와 다릅니다.
- 25쪽 star 탐구는 함수 임포트와 모듈 임포트 표현이 혼재합니다. 명시적으로 두 호출법을 구별합니다.
- __all__은 접근 금지가 아니고 별표 임포트의 이름 목록입니다.
- 패키지 구조와 __all__: 교과서 보완: 25쪽 탐구의 설명과 정답편은 특정 함수 임포트/모듈 임포트 표현이 일치하지 않습니다. 예제는 from star import makestar와 import star as s를 각각 보여주며, 함수 별칭은 from star import makestar as s로 따로 연습할 수 있습니다.
- random · 결과보다 조건 확인하기: 교과서 보완: uniform(a, b)의 끝 값 b는 부동소수점 반올림에 따라 포함될 수도 있습니다. 무조건 끝 미만이라고 단정하지 않습니다. 추가 실습에서는 시드를 고정해 재현하고, 범위·개수·구성원을 검사합니다.
대단원 Ⅰ. 모듈과 패키지 활용 교과서 6–39쪽
중단원 01. 모듈, 패키지의 개요 · 8–13쪽
소단원 01. 모듈의 개념 및 필요성 · 9–10쪽
중단원 01. 모듈, 패키지의 개요 · 8–13쪽
소단원 02. 패키지의 개념 및 필요성 · 11–12쪽
이 웹 주제의 연계 범위: 8–13쪽
웹 학습 주제 01
모듈과 패키지가 필요한 이유
복사해 둔 함수가 열 군데 있다면, 오류 하나를 어디에서 고쳐야 할까요?
파일과 폴더로 보는 재사용
| 구조 | 비유 | 예 |
|---|---|---|
| 모듈 | 기능 상자 | calculator.py |
| 패키지 | 상자를 묶은 서랍 | nature/animals/ |
| 라이브러리 | 재사용 도구 모음 | 표준 라이브러리 |
시연·발문·확인
발문: 복사해 둔 함수가 열 군데 있다면, 오류 하나를 어디에서 고쳐야 할까요?
시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.
확인: 모듈과 패키지를 파일과 폴더에 대응하여 설명하세요.
대단원 Ⅰ. 모듈과 패키지 활용 교과서 6–39쪽
중단원 02. 모듈, 패키지 활용 · 14–35쪽
소단원 01. 모듈 정의하기 · 15–18쪽
이 웹 주제의 연계 범위: 15–16쪽
웹 학습 주제 02
실행문·함수·클래스로 모듈 정의하기
import 한 줄인데 왜 두 번 출력될까요?
정의와 호출의 실행 시점
- 1import파일의 최상위 실행
- 2def / class이름과 기능 정의
- 3함수 호출본문 실행
| 코드 위치 | 임포트할 때 | 호출할 때 |
|---|---|---|
| 최상위 print | 출력 | 자동 반복 안 함 |
| def 안의 print | 정의만 준비 | 출력 |
| class 안 메서드 | 메서드 정의 | 메서드 본문 실행 |
시연·발문·확인
발문: import 한 줄인데 왜 두 번 출력될까요?
시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.
확인: 실행 전에 출력되는 줄 수와 순서를 예상하세요.
대단원 Ⅰ. 모듈과 패키지 활용 교과서 6–39쪽
중단원 02. 모듈, 패키지 활용 · 14–35쪽
소단원 01. 모듈 정의하기 · 15–18쪽
이 웹 주제의 연계 범위: 17–18쪽
웹 학습 주제 03
__name__과 __main__
실행 파일 선택을 바꾸어 같은 모듈의 두 역할을 관찰하세요.
같은 파일, 두 가지 역할
- 1직접 실행__name__ = "__main__"
- 2조건 비교이름이 __main__인가?
- 3참이면시험용 코드 실행
| 실행 방법 | __name__ | main 가드 |
|---|---|---|
| python circle.py | __main__ | 실행 |
| import circle | circle | 건너뜀 |
| 최상위 실행문 | 두 경우 모두 | 가드 밖이면 실행 |
시연·발문·확인
발문: 실행 파일 선택을 바꾸어 같은 모듈의 두 역할을 관찰하세요.
시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.
확인: rectEx1의 조건문을 제거했을 때와 있을 때의 출력을 비교하세요.
대단원 Ⅰ. 모듈과 패키지 활용 교과서 6–39쪽
중단원 02. 모듈, 패키지 활용 · 14–35쪽
소단원 02. 모듈과 패키지 사용하기 · 19–25쪽
이 웹 주제의 연계 범위: 19–21쪽
웹 학습 주제 04
임포트 문과 호출법 연결하기
불러온 이름이 무엇인지 알면 호출법도 결정됩니다.
불러온 이름이 호출법을 결정해요
- 1greet.pyhello 정의
- 2임포트 문현재 이름 연결
- 3현재 코드연결한 이름으로 호출
| 임포트 | 연결된 이름 | 호출 |
|---|---|---|
| import greet | greet | greet.hello() |
| import greet as g | g | g.hello() |
| from greet import hello | hello | hello() |
| from greet import hello as h | h | h() |
시연·발문·확인
발문: 불러온 이름이 무엇인지 알면 호출법도 결정됩니다.
시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.
확인: 같은 hello 함수를 네 가지 방식으로 호출하세요.
대단원 Ⅰ. 모듈과 패키지 활용 교과서 6–39쪽
중단원 02. 모듈, 패키지 활용 · 14–35쪽
소단원 02. 모듈과 패키지 사용하기 · 19–25쪽
이 웹 주제의 연계 범위: 21–25, 35쪽
웹 학습 주제 05
패키지 구조와 __all__
폴더 트리의 점(.)은 어떤 경로를 가리킬까요?
폴더 경로와 점 경로 연결
- 1nature/패키지
- 2animals/하위 패키지
- 3bird.py모듈
- 4wild()함수
| 표현 | 대상 | 호출 예 |
|---|---|---|
| nature.animals.bird | 모듈 경로 | nature.animals.bird.wild() |
| from nature.animals import bird | bird 모듈 | bird.wild() |
| __all__ = ["bird"] | 별표 임포트 이름 | 명시적 임포트는 별개 |
시연·발문·확인
발문: 폴더 트리의 점(.)은 어떤 경로를 가리킬까요?
시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.
확인: __all__에 flower를 추가하고 달라진 결과를 확인하세요.
대단원 Ⅰ. 모듈과 패키지 활용 교과서 6–39쪽
중단원 02. 모듈, 패키지 활용 · 14–35쪽
소단원 03. 여러 가지 모듈 활용하기 · 26–33쪽
이 웹 주제의 연계 범위: 26–28쪽
웹 학습 주제 06
os와 sys로 실행 환경 살펴보기
파일을 찾는 위치와 프로그램에 전달되는 값을 확인하세요.
환경과 실행 인자를 구별해요
- 1터미널python main.py A B
- 2sys.argv[파일명, A, B]
- 3os.getcwd()파일을 찾는 기준 위치
| 도구 | 알아내는 것 | 주의 |
|---|---|---|
| os.getcwd() | 현재 작업 폴더 | 소스 파일 폴더와 다를 수 있음 |
| os.listdir() | 폴더 안 이름 | 웹에서는 가상 파일 |
| sys.argv | 실행 인자 | 모든 인자는 문자열 |
| sys.exit() | 실행 종료 | 아래 코드는 실행 안 됨 |
시연·발문·확인
발문: 파일을 찾는 위치와 프로그램에 전달되는 값을 확인하세요.
시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.
확인: 실행 인자를 0개·1개·2개로 바꿔 보세요.
대단원 Ⅰ. 모듈과 패키지 활용 교과서 6–39쪽
중단원 02. 모듈, 패키지 활용 · 14–35쪽
소단원 03. 여러 가지 모듈 활용하기 · 26–33쪽
이 웹 주제의 연계 범위: 29쪽
웹 학습 주제 07
math · 계산을 함수로 표현하기
함수 이름을 외우기 전에 어떤 계산이 필요한지 판단하세요.
음수에서도 올림과 내림은 방향으로
- 1−4floor(−3.5)
- 2−3.5원래 값
- 3−3ceil(−3.5)
| 함수 | 역할 | 예 |
|---|---|---|
| floor | 작거나 같은 최대 정수 | floor(-3.5) → -4 |
| ceil | 크거나 같은 최소 정수 | ceil(-3.5) → -3 |
| sqrt | 제곱근 | sqrt(81) → 9.0 |
| gcd / factorial | 최대공약수 / 팩토리얼 | gcd(12,18) → 6 |
시연·발문·확인
발문: 함수 이름을 외우기 전에 어떤 계산이 필요한지 판단하세요.
시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.
확인: 3.5 대신 -3.5를 사용해 올림과 내림을 설명하세요.
대단원 Ⅰ. 모듈과 패키지 활용 교과서 6–39쪽
중단원 02. 모듈, 패키지 활용 · 14–35쪽
소단원 03. 여러 가지 모듈 활용하기 · 26–33쪽
이 웹 주제의 연계 범위: 30–31, 33, 37쪽
웹 학습 주제 08
random · 결과보다 조건 확인하기
매번 결과가 달라도 올바른 프로그램인지 판단할 수 있습니다.
난수 도구는 결과의 조건으로 골라요
- 1숫자 하나?randint / randrange
- 2항목 하나?choice
- 3여러 항목?sample
- 4순서 변경?shuffle
| 함수 | 포함 범위 / 변화 | 반환 |
|---|---|---|
| randint(1,6) | 1과 6 포함 | 정수 |
| randrange(1,6) | 6 제외 | 정수 |
| sample(L,2) | 위치 중복 없이 추출 | 새 리스트 |
| shuffle(L) | 원본 순서 변경 | None |
시연·발문·확인
발문: 매번 결과가 달라도 올바른 프로그램인지 판단할 수 있습니다.
시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.
확인: 중복 없는 명단에서 2명을 뽑고 원본이 유지되는지 확인하세요.
대단원 Ⅰ. 모듈과 패키지 활용 교과서 6–39쪽
중단원 02. 모듈, 패키지 활용 · 14–35쪽
소단원 03. 여러 가지 모듈 활용하기 · 26–33쪽
이 웹 주제의 연계 범위: 31–33, 38쪽
웹 학습 주제 09
datetime · 날짜를 계산하는 프로그램
날짜를 문자열로 빼지 않고 날짜 객체로 계산합니다.
문자열에서 날짜 계산까지
- 1"2026-12-25"문자열
- 2date.fromisoformat날짜로 변환
- 3날짜 − 날짜timedelta
- 4days일수 꺼내기
| 도구 | 결과 | 주의 |
|---|---|---|
| date.today() | 오늘 날짜 | 실행 날짜에 따라 다름 |
| weekday() | 월 0 … 일 6 | 요일 이름은 따로 대응 |
| strftime() | 표시용 문자열 | 계산은 날짜 상태에서 |
| timedelta(days=1) | 하루 간격 | 월말·윤년 자동 처리 |
시연·발문·확인
발문: 날짜를 문자열로 빼지 않고 날짜 객체로 계산합니다.
시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.
확인: 2026-12-24, 2026-12-25, 2026-12-26을 기준으로 각각 시험하세요.
대단원 Ⅰ. 모듈과 패키지 활용 교과서 6–39쪽
중단원 02. 모듈, 패키지 활용 · 14–35쪽
소단원 03. 여러 가지 모듈 활용하기 · 26–33쪽
이 웹 주제의 연계 범위: 32–33쪽
웹 학습 주제 10
PyPI와 서드파티 패키지
필요한 기능을 찾고, 설치 이름과 임포트 이름을 확인하세요.
설치 이름과 임포트 이름은 다를 수 있어요
- 1가상환경 선택
- 2python -m pip install 패키지
- 3같은 Python으로 import
- 4짧은 예제로 동작 확인
| 설치 | 임포트 | 용도 |
|---|---|---|
| numpy | numpy | 수치 배열 |
| pillow | PIL | 이미지 처리 |
| beautifulsoup4 | bs4 | HTML 분석 |
| scikit-learn | sklearn | 머신러닝 |
시연·발문·확인
발문: 필요한 기능을 찾고, 설치 이름과 임포트 이름을 확인하세요.
시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.
확인: 이미지 크기 변경·게임·웹페이지에서 제목 추출에 맞는 패키지를 고르세요.
대단원 Ⅰ. 모듈과 패키지 활용 교과서 6–39쪽
마무리·종합 평가 연계
이 웹 주제의 연계 범위: 13, 34–39쪽
웹 학습 주제 11
단원 마무리와 종합 평가
정답을 본 뒤에는 숫자와 조건을 바꾸어 다시 풀어 보세요.
한 단원, 세 가지 확인
- 1설명하기개념을 내 말로
- 2예상하기실행 전 결과 추적
- 3바꾸기조건 변경 후 검증
| 점검 | 질문 |
|---|---|
| 개념 | 왜 이 도구를 선택했나요? |
| 코드 | 입력과 출력은 무엇인가요? |
| 검증 | 조건을 바꾸어도 동작하나요? |
시연·발문·확인
발문: 정답을 본 뒤에는 숫자와 조건을 바꾸어 다시 풀어 보세요.
시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.
확인: 힌트 없이 두 파일을 만들고 import하여 호출하세요.
대단원 Ⅰ. 모듈과 패키지 활용 교과서 6–39쪽
추가 실습 · 교과서 밖 확장
이 웹 주제의 연계 범위: 보강 · 수행평가 연결
웹 학습 주제 12
1단원 프로젝트 · 우리 반 기능 패키지
GUI 없이도 시험할 수 있는 기능부터 만듭니다.
기능에서 완성 앱까지
- 1요구 기능 정하기
- 2기능 모듈 구현
- 3입력과 오류 시험
- 4화면 연결·기록
| 산출물 | 확인할 내용 |
|---|---|
| 기능 코드 | GUI 없이도 시험 가능 |
| 실행 결과 | 정상·빈 값·경계값 비교 |
| 학습 기록 | 오류 원인과 수정 근거 |
시연·발문·확인
발문: GUI 없이도 시험할 수 있는 기능부터 만듭니다.
시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.
확인: 파일 트리와 각 파일의 역할을 제출 설명에 적으세요.
인공지능 파이썬 실무