Skip to content

Commit 97e22f5

Browse files
committed
up
1 parent 219a39b commit 97e22f5

File tree

3 files changed

+148
-13
lines changed

3 files changed

+148
-13
lines changed

practices/practice-starting.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1199,7 +1199,7 @@
11991199
"cell_type": "markdown",
12001200
"metadata": {},
12011201
"source": [
1202-
"지금까지 설명한 모든 코드를 정리하면 다음과 같다."
1202+
"지금까지 설명한 모든 코드를 종합하면 다음과 같다."
12031203
]
12041204
},
12051205
{

starting-1.md

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
# `starting.ipynb` 3시간 수업 운영안 (1.5h × 2회)
2+
3+
- 구성: **각 회차 90분 = (앞 30분 요약 강의) + (뒤 60분 실습/문제풀이)**
4+
- 목표: 학생들이 "파이썬이 뭔지"가 아니라, **직접 실행하고(Shift+Enter), 에러를 읽고, 작은 코드 단위로 고쳐나가는 흐름**을 몸에 익히게 한다.
5+
- 원칙(반복해서 말하기):
6+
1) 복붙 금지(학습 효과 급감) 2) 에러 메시지 마지막 줄부터 읽기 3) 헷갈리면 `print()`로 확인
7+
8+
---
9+
10+
## 1회차(90분) — 30분 요약 스크립트
11+
12+
### 0–3분: 오리엔테이션(오늘의 미션)
13+
- 오늘 목표: **문자열 출력 + 변수 할당 + (노트북 실행 방식) + (기본 에러 친해지기)**
14+
- 진행 방식 안내: “앞 30분은 제가 핵심만 보여드리고, 뒤 60분은 여러분이 직접 타이핑하면서 따라오고 질문 받겠습니다.”
15+
16+
### 3–10분: 노트북 사용법(Notebook vs Script) + 표현식/명령문
17+
- 데모(매우 짧게):
18+
- 셀에 `10 + 20`만 적고 실행 → 값이 바로 보임
19+
- 셀에 `print(10 + 20)` 실행 → 출력이 보임
20+
- 한 문장 정의(칠판/슬라이드에 고정):
21+
- **표현식(Expression)**: 실행하면 “값”이 되는 것 (예: `10+20`, `'Hello'`)
22+
- **명령문(Statement)**: 컴퓨터에게 “하라”라고 시키는 것 (예: `a = 10`, `print(...)`)
23+
- 초보자 포인트: “노트북은 마지막 줄의 표현식 결과를 보여줄 때가 많다. 헷갈리면 `print()`를 쓰면 된다.”
24+
25+
### 10–18분: `print()`로 문자열 출력(따옴표 규칙)
26+
- 핵심 메시지 3개:
27+
1) 문자열은 따옴표로 감싼다: `"Hello"` 또는 `'Hello'`
28+
2) 따옴표 종류는 상관없지만 **시작/끝은 같은 따옴표**
29+
3) 화면에 따옴표가 안 찍혀도, 문자열에서 따옴표가 사라진 게 아니다(표시만 안 함)
30+
- 데모:
31+
- `print("Hello, world!")`
32+
- `print('Hello', 'world', '!')` → 인자 사이에 공백이 들어감을 보여주기
33+
- 빠른 확인 질문:
34+
-`'3'``3`은 뭐가 다르죠?” (문자열 vs 숫자)
35+
36+
### 18–25분: 변수 할당(=의 의미) + 이름이 중요하다
37+
- 데모(최소 2개):
38+
- `a = 10` 다음 줄에 `a` 또는 `print(a)`
39+
- `a = a + 1` (재할당 맛보기)
40+
- 꼭 짚을 문장:
41+
-`=`는 수학의 ‘같다’가 아니라 **대입(할당)**이다.”
42+
- 에러 맛보기(의도적으로 1번):
43+
- 정의 안 한 변수 출력 → `NameError` (에러 메시지 마지막 줄 읽기)
44+
45+
### 25–30분: 변수 이름 규칙(문법) vs 관례(약속)
46+
- 문법(안 지키면 에러):
47+
- 숫자로 시작 불가, 공백 불가, 예약어 불가 등
48+
- 관례(안 지켜도 돌아가지만 권장):
49+
- 변수는 보통 `snake_case` 사용
50+
- 짧게 던질 멘트:
51+
- “변수 이름은 미래의 나/팀원이 읽는 설명서다.”
52+
53+
### 뒤 60분 실습(학생 안내 문구)
54+
- 미션: [starting.ipynb](starting.ipynb)을 보면서 **새 코랩/새 노트북에 직접 타이핑**해서 실행한다.
55+
- 체크포인트:
56+
- 문자열 출력 예제를 최소 3개 바꿔서 실행해보기(문장/기호/이름 등)
57+
- `NameError`/`SyntaxError`가 뜨면 스크린샷이 아니라 **에러 마지막 줄을 한국어로 해석**해보기
58+
- 변수 이름 규칙 위반 예제는 “왜 에러인지” 한 줄 주석으로 설명하기
59+
60+
---
61+
62+
## 2회차(90분) — 30분 요약 스크립트
63+
64+
### 0–5분: 리캡 + 오늘 목표
65+
- 리캡 질문 3개로 시작:
66+
1) 표현식/명령문 차이 한 문장으로?
67+
2) `=`는 무슨 뜻?
68+
3) 에러가 나면 어디부터 읽는다?
69+
- 오늘 목표: **파이썬 계산기(연산자) + 자료형 `type()` + 에러 메시지 읽기 + 연습문제 풀이 전략**
70+
71+
### 5–15분: 파이썬 계산기(연산자) 핵심만
72+
- 반드시 다루기(입문에서 가장 헷갈리는 3종 나눗셈):
73+
- `/` : 결과가 보통 실수(`float`)로 나옴
74+
- `//`: 몫(버림)
75+
- `%` : 나머지(시간/짝홀 판별에 자주 씀)
76+
- 짧은 데모(숫자는 크게):
77+
- `7 / 2`, `7 // 2`, `7 % 2`
78+
- 문자열 연산 맛보기:
79+
- `'Py' + 'thon'`
80+
- `'Ha' * 3`
81+
82+
### 15–20분: 자료형(`type()`)과 동적 타이핑 감 잡기
83+
- 핵심 메시지:
84+
- “같아 보이는 `3``'3'`은 완전히 다른 타입이다.”
85+
- 데모:
86+
- `type(3)`, `type(3.14)`, `type('3')`
87+
- 짧게 언급:
88+
- “파이썬은 변수에 타입을 미리 고정하지 않는 편(동적 타이핑). 대신 실행 중에 타입 관련 에러가 난다.”
89+
90+
### 20–25분: 에러 메시지 읽기(초보자용 루틴)
91+
- 루틴(말로 외우게 하기):
92+
1) **맨 마지막 줄**부터 읽기
93+
2) 에러 종류 확인(NameError/SyntaxError/TypeError/ZeroDivisionError 등)
94+
3) 메시지에 나온 변수/기호를 코드에서 찾기
95+
4) 한 번에 한 줄씩 고치고 다시 실행
96+
- 데모(가능하면 1개만):
97+
- `print(10 / 0)``ZeroDivisionError` (실험은 괜찮지만 원인 파악이 먼저)
98+
99+
### 25–30분: 연습문제 풀이 전략(뒤 60분 실습 연결)
100+
- 풀이 전략 4단계:
101+
1) 요구사항을 변수로 쪼개기(입력/중간값/출력)
102+
2) 먼저 `print()`로 중간값 확인
103+
3) 단위(초/분/시간)·타입(int/float/str) 점검
104+
4) 마지막에만 출력 정리
105+
- 강사 멘트:
106+
- “정답보다 중요한 건, **내가 쓴 코드가 왜 그렇게 동작하는지 설명하는 능력**입니다.”
107+
108+
### 뒤 60분 실습(학생 안내 문구)
109+
- 미션: 노트북의 **연산자/자료형 파트**를 따라 실행하고, 연습문제(예: 시간 계산, 단위 변환, 문자열 연산 등)를 스스로 해결한다.
110+
- 체크포인트:
111+
- `/`, `//`, `%`를 각각 언제 쓰는지 예시 1개씩 만들기
112+
- `type()`으로 확인하는 습관 들이기(헷갈리면 바로 확인)
113+
- 에러가 나면 “에러 종류 + 내 코드의 원인 후보”를 말로 설명하고 질문하기
114+
115+
---
116+
117+
## 강사용 운영 팁(짧게)
118+
- 학생이 막히는 지점은 대부분 ① 따옴표 ② `=`의 의미 ③ 변수 이름 규칙 ④ 나눗셈 3종 ⑤ 에러 메시지 공포감이다.
119+
- 설명은 짧게, 데모는 작게, 실습은 길게: “한 번에 많이”보다 “조금씩 확실히”를 반복한다.

starting.ipynb

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@
114114
"`print()` 함수를 실행했을 때 \n",
115115
"문장과 함께 사용된 따옴표 기호는 함께 출력되지 않는다.\n",
116116
"하지만 그렇다고 해서 사용된 따옴표가 컴퓨터에서 사라지는 것은 아니고 편의상 화면에 보이지 않을 뿐이다.\n",
117+
"\n",
118+
"처음에는 결과 확인을 위해 항상 `print()`로 출력해보자.\n",
117119
":::"
118120
]
119121
},
@@ -147,12 +149,11 @@
147149
"cell_type": "markdown",
148150
"metadata": {},
149151
"source": [
150-
"```{note} 주의사항\n",
152+
":::{note} 주의사항\n",
151153
"\n",
152154
"`'Hello, world!'` 문자열에 포함된 쉼표는 해당 문자열의 구성요소로 간주되는 반면에 \n",
153155
"`print('Hello', 'world', '!')` 에서는 쉼표가 세 개의 함수 인자를 구분하는 기능으로 사용됨에 주의한다.\n",
154-
"\n",
155-
"```"
156+
":::"
156157
]
157158
},
158159
{
@@ -342,8 +343,8 @@
342343
":class: info\n",
343344
"\n",
344345
"프로그래밍에서 값을 가리키는 코드를 **표현식**<font size='2'>expression</font>이라 하고, 컴퓨터에게 특정 작업을 수행하도록 지시하는 코드를 **명령문**<font size='2'>statement</font>이라 한다.\n",
345-
"예를 들어 `2 * a`는 2와 변수 `a`가 가리키는 3을 곲한 값 6을 가리키는 표현식이다.\n",
346-
"반면에 `b = 2 * a`는 변수 `b`에 `2 * a`가 가리키는 6을 할당하는 작업을 수행는 명령문이다.\n",
346+
"예를 들어 `2 * a`는 2와 변수 `a`가 가리키는 3을 곱한 값 6을 가리키는 표현식이다.\n",
347+
"반면에 `b = 2 * a`는 변수 `b`에 `2 * a`가 가리키는 6을 할당하는 작업을 수행하는 명령문이다.\n",
347348
"\n",
348349
"앞으로 다양한 표현식과 명령문을 배우게 된다. \n",
349350
"프로그래밍을 잘한다 함은 결국 적절한 표현식과 명령문을 조합할 줄 안다는 것을 의미한다.\n",
@@ -359,7 +360,7 @@
359360
"두 개의 새로운 변수를 선언한다.\n",
360361
"\n",
361362
"아래 코드에서는 한글 문자 또한 변수를 지정할 때 사용될 수 있다는 것을 보여주기 위해 일부러 한글과 영어를 섞어 변수를 선언하였다.\n",
362-
"하지만 한글 문자를 변수 선언에 활용하는 경우는 많지 않다."
363+
"하지만 한글 문자를 변수 선언에 활용하는 일은 권장되지 않는다."
363364
]
364365
},
365366
{
@@ -498,7 +499,7 @@
498499
"- 뱀 표기법 예제: `score_a`, `score_b`, `total_score` 등등\n",
499500
"- 낙타 표기법 예제: `scoreA`, `scoreB`, `totalScore` 등등\n",
500501
"\n",
501-
"여러 사람과의 협업을 위해 이러한 관례를 따르는 것이 권장된다."
502+
"파이썬 프로그래머는 협업, 검색, 도구 호환을 위해 보통 영어 알파벳과 뱀 표기법을 활용한다. "
502503
]
503504
},
504505
{
@@ -512,14 +513,14 @@
512513
"cell_type": "markdown",
513514
"metadata": {},
514515
"source": [
515-
"변수을 지정할 때 지켜야 하는 몇 가지 규칙이 있다.\n",
516+
"변수를 지정할 때 지켜야 하는 몇 가지 규칙이 있다.\n",
516517
"\n",
517518
"- 알파벳, 숫자, 밑줄 기호 `_` 등을 임의로 조합한다.\n",
518519
"- 다음 기호들은 사용할 수 없다.\n",
519520
"\n",
520521
" ```\n",
521522
" ., !, +, -, *, /, %, @, ~\n",
522-
" ````\n",
523+
" ```\n",
523524
"\n",
524525
"- 공백<font size='2'>space</font>을 포함할 수 없다.\n",
525526
"- 숫자로 시작할 수 없다.\n",
@@ -555,6 +556,18 @@
555556
"여기서는 허용되지 않는 방식으로 변수명을 사용할 때 발생하는 오류를 이용하여 오류 메시지를 이해하는 방법을 소개한다."
556557
]
557558
},
559+
{
560+
"cell_type": "markdown",
561+
"metadata": {},
562+
"source": [
563+
":::{warning} 오류 발생 코드 안내\n",
564+
"\n",
565+
"아래 코드셀은 학습을 위해 의도적으로 에러가 발생하는 코드를 담고 있다.\n",
566+
"에러가 발생하는 경우와 원인을 확인하는 연습을 위해서다.\n",
567+
"앞으로 필요에 따라 일부러 오류가 발생하는 코드를 종종 활용한다.\n",
568+
":::"
569+
]
570+
},
558571
{
559572
"cell_type": "markdown",
560573
"metadata": {},
@@ -686,7 +699,7 @@
686699
"cell_type": "markdown",
687700
"metadata": {},
688701
"source": [
689-
"사계 4) `False`는 거짓을 나타내는 값을 가리키는 키워드가 사용되어 오류가 발생한다."
702+
"사례 4) `False`는 거짓을 나타내는 값을 가리키는 키워드가 사용되어 오류가 발생한다."
690703
]
691704
},
692705
{
@@ -774,6 +787,7 @@
774787
"source": [
775788
"변수는 값을 가리키는 이름이며 언제든지 가리키는 값을 바꿀 수 있다.\n",
776789
"이런 의미에서 등호 기호 `=`의 의미에 주의해야 한다.\n",
790+
"즉, `=`는 수학의 ‘같다’가 아니라 ‘할당(대입)’을 의미한다.\n",
777791
"\n",
778792
"예를 들어 아래처럼 변수 `int_x`에 정수 5를 할당하자."
779793
]
@@ -916,7 +930,7 @@
916930
},
917931
{
918932
"cell_type": "code",
919-
"execution_count": 25,
933+
"execution_count": null,
920934
"metadata": {},
921935
"outputs": [
922936
{
@@ -929,7 +943,7 @@
929943
],
930944
"source": [
931945
"c = a + b\n",
932-
"print(d)"
946+
"print(c)"
933947
]
934948
},
935949
{
@@ -1423,6 +1437,8 @@
14231437
"주피터 노트북에서 코드셀 마지막 줄의 표현식 은 `print()` 없이도 결과가 화면에 표시될 수 있다.\n",
14241438
"실행결과를 바로 확인하도록 도와주는 기능일 뿐 코드의 내용이 달라지지는 않는다.\n",
14251439
"반면에 스크립트라고 불리는 `.py` 확장자를 갖는 파이썬 소스코드 파일을 실행할 때는 보통 `print()` 함수를 함께 써야만 화면에 출력된다.\n",
1440+
"\n",
1441+
"처음에는 헷갈리면 언제나 `print()`로 결과를 확인해도 된다.\n",
14261442
":::"
14271443
]
14281444
},

0 commit comments

Comments
 (0)