Skip to content

Commit 9f49287

Browse files
committed
up
1 parent 6e06c31 commit 9f49287

File tree

4 files changed

+169
-31
lines changed

4 files changed

+169
-31
lines changed

myst.yml

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,36 @@ version: 1
33
project:
44
id: bfa66ee1-fd85-4563-8fb7-04c22ec8dbd3
55
title: '42H: 파이썬'
6+
# authors:
7+
# - name: 코딩알지
8+
69
numbering:
7-
title: false
8-
headings: true
10+
title: true
11+
# headings: true
912
# description:
1013
# keywords: []
1114
# authors: []
1215
github: https://github.com/codingalzi/code-workout-python
13-
# To autogenerate a Table of Contents, run "jupyter book init --write-toc"
16+
17+
exports:
18+
- format: typst
19+
template: https://github.com/myst-templates/plain_typst_book.git
20+
output: exports/MechaRela.pdf
21+
id: output-pdf1
22+
logo: logo_TUD.png
23+
cover: cover.png
24+
25+
# jupyter:
26+
# binder:
27+
# repo: https://github.com/executablebooks/thebe-binder-base
28+
29+
# To autogenerate a Table of Contents, run "jupyter book init --write-toc"
1430
toc:
1531
- file: intro.md
1632
- file: programming.md
17-
- file: README.md
18-
jupyter:
19-
binder:
20-
repo: https://github.com/executablebooks/thebe-binder-base
21-
33+
- file: starting.ipynb
34+
35+
2236
site:
2337
template: book-theme
2438
options:

programming.md

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
1-
---
2-
kernelspec:
3-
name: python3
4-
display_name: 'Python 3'
5-
---
6-
71
# 파이썬 프로그래밍
82

93
외국인과 대화하려면 그 나라 말을 배워야 하듯, 컴퓨터에게 일을 시키려면 **컴퓨터와의 대화**를 가능하게 하는 언어를 배워야 한다. 그것이 바로 **프로그래밍 언어**다.
104
그중에서도 가장 배우기 쉽고 강력한 언어인 파이썬을 알아보자.
115

126
## 컴퓨터와 소프트웨어
137

14-
컴퓨터는 PC, 노트북, 스마트폰 등 우리 주변의 다양한 전자기기를 말한다. 이 기계들은 혼자서는 아무것도 할 수 없는 '깡통'과 같다. 이 기계에 생명을 불어넣어 주는 것이 바로 OS라 불리는 **운영체제****소프트웨어**다.
8+
컴퓨터는 PC, 노트북, 스마트폰 등 우리 주변의 다양한 전자기기를 말한다. 이 기계들은 혼자서는 아무것도 할 수 없는 빈 깡통과 같다. 이 기계에 생명을 불어넣어 주는 것이 바로 OS라 불리는 **운영체제****소프트웨어**다.
159

16-
- **운영체제**: 윈도우<font size='2'>Windows</font>, 맥OS<font size='2'>macOS</font>, 안드로이드, iOS처럼 컴퓨터의 하드웨어를 관리하고 기본적으로 작동하게 만드는 시스템이다. 흔히 OS(Operating System)라 불린다.
10+
- **운영체제**: 윈도우, 맥OS, 안드로이드, iOS처럼 컴퓨터의 하드웨어를 관리하고 기본적으로 작동하게 만드는 시스템이다. 영어로 Operating System이며 흔히 OS라 줄여서 불린다.
1711
- **애플리케이션** 또는 ****: 카카오톡, 유튜브, 엑셀처럼 특정한 목적을 위해 만들어진 프로그램이다.
1812

1913
개발자들이 흔히 혼용하는 용어들을 정리하면 다음과 같다.
@@ -33,14 +27,14 @@ kernelspec:
3327
첫째, 사람의 언어와 닮았다.
3428

3529
파이썬은 문법이 매우 직관적이고 간결하다. 마치 영어 문장을 읽는 것처럼 코드를 읽을 수 있어 초보자가 배우기에 가장 적합하다.
36-
예를 들어 컴퓨터 화면에 "Hello" 문장을 출력하는 코드를 세 언어에 대해 비교해보자.
30+
예를 들어 컴퓨터 화면에 "Hello Python" 이라는 문장을 출력하는 코드를 세 언어에 대해 비교해보자.
3731

3832
* C 언어: 준비 과정이 필요하고 코드가 길다.
3933
```c
4034
#include <stdio.h>
4135

4236
int main() {
43-
printf("Hello\n");
37+
printf("Hello Python\n");
4438
return 0;
4539
}
4640
```
@@ -49,14 +43,14 @@ kernelspec:
4943
```java
5044
public class Main {
5145
public static void main(String[] args) {
52-
System.out.println("Hello");
46+
System.out.println("Hello Python");
5347
}
5448
}
5549
```
5650

5751
* 파이썬: 한 줄이면 충분하다.
5852
```python
59-
print("Hello")
53+
print("Hello Python")
6054
```
6155

6256
둘째, 활용 범위가 넓다.
@@ -70,21 +64,28 @@ kernelspec:
7064
- **과학 및 공학 연산**: NASA의 우주 연구나 기상청의 날씨 예측 등 복잡한 과학 계산에 사용된다.
7165
- **게임 및 GUI 개발**: 나만의 게임을 만들거나, 계산기 같은 PC용 프로그램을 개발할 수 있다.
7266

73-
셋째, 강력한 도구(라이브러리)가 많다.
67+
셋째, 강력한 도구(라이브러리)를 많이 제공한다.
7468

7569
전 세계의 수많은 개발자가 만들어 놓은 유용한 도구(라이브러리)들이 풍부하다. 이 도구들을 활용하여 훌륭한 프로그램을 손쉽게 만들 수 있다.
7670

7771
## 파이썬 코드 실행 방식
7872

7973
파이썬은 **인터프리터**<font size='2'>Interpreter</font> 언어다.
8074
인터프리터는 우리가 작성한 코드를 한 줄씩 번역하여 컴퓨터가 실행할 수 있도록 전달한다.
81-
직역하여 해석기라고 할 수도 있지만 파이썬 코드 실행을 담당하는 실행기라고 부르는 게 보다 적절하다.
75+
직역하여 해석기라고 할 수도 있지만 파이썬 코드 실행을 담당한다는 의미에서
76+
**실행기**라고 부르는 게 보다 적절하다.
77+
78+
반면에 C 언어, 자바 등은 **컴파일러**<font size='2'>Compiler</font> 언어다.
79+
작성된 소스 코드 전체가 먼저 컴파일러에 의해 기계어로 번역된 후에야 코드가 실행될 수 있다.
8280

83-
반면에 C 언어, 자바 등은 컴파일러<font size='2'>Compiler</font> 언어다.
84-
컴파일러에 의해 작성된 소스 코드 전체가 기계어로 번역된 후에야 코드를 실행할 수 있다.
81+
두 종류의 언어를 구분하는 특성을 정리하면 다음과 같다.
8582

86-
* **인터프리터 언어**: 파이썬처럼 코드를 한 줄씩 읽어가며 즉시 실행한다. 코드를 수정하고 바로 결과를 확인할 수 있어 학습과 개발 속도가 빠르다.
87-
* **컴파일러 언어**: C 언어나 자바처럼 소스 코드 전체를 기계어로 미리 번역한 후 실행한다. 실행 속도는 빠르지만 코드를 수정할 때마다 매번 다시 번역하는 과정이 필요하다.
83+
| **인터프리터 언어** | **컴파일러 언어** |
84+
| :--- | :--- |
85+
| 파이썬, 자바스크립트 등| C, C++, C#, 자바 등 |
86+
| 코드를 한 줄씩 읽어가며 즉시 실행 | 소스 코드 전체를 기계어로 미리 번역한 후 실행 |
87+
| 코드 수정 후 바로 결과 확인 가능 | 코드를 수정할 때마다 다시 번역 과정 필요 |
88+
| 학습과 개발 속도 빠름 | 실행 속도 빠름 |
8889

8990
## 파이썬 맛보기
9091

@@ -97,10 +98,10 @@ kernelspec:
9798
secret = 13 # 비밀 숫자
9899
guess = 17 # 내가 추측한 숫자
99100

100-
if guess == secret: # 만약 추측한 숫자가 비밀 숫자와 같다면
101-
print("맞았습니다!") # "맞았습니다!" 출력
102-
else: # 그렇지 않다면
103-
print("틀렸습니다!") # "틀렸습니다!" 출력
101+
if guess == secret: # 만약 추측한 숫자가 비밀 숫자와 같다면
102+
print("맞았습니다!") # "맞았습니다!" 출력
103+
else: # 그렇지 않다면
104+
print("틀렸습니다!") # "틀렸습니다!" 출력
104105
```
105106

106107
위 코드는 `guess` 변수가 가리키는 값이 `secret` 변수가 가리키는 값과 다르면 "틀렸습니다!"를 출력하고, 같으면 "맞았습니다!"를 출력한다.
Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,22 @@
88
"# 프로그래밍 맛보기"
99
]
1010
},
11+
{
12+
"cell_type": "markdown",
13+
"metadata": {},
14+
"source": [
15+
":::{admonition} 구글 코랩에서 바로 실행\n",
16+
":class: note\n",
17+
"\n",
18+
"아래 링크로 `starting.ipynb`를 **Google Colab**에서 열어 바로 실행할 수 있다.\n",
19+
"\n",
20+
"- https://colab.research.google.com/github/codingalzi/code-workout-python/blob/master/starting.ipynb\n",
21+
"\n",
22+
"코랩에서는 각 셀을 `Shift+Enter`로 실행하며, 실행 결과는 셀 아래에 표시된다.\n",
23+
"\n",
24+
":::"
25+
]
26+
},
1127
{
1228
"cell_type": "markdown",
1329
"metadata": {},
@@ -94,6 +110,20 @@
94110
"함수는 `print()` 처럼 함수 이름과 괄호를 함께 표기하는 방식으로 언급될 것이다."
95111
]
96112
},
113+
{
114+
"cell_type": "markdown",
115+
"metadata": {},
116+
"source": [
117+
":::{admonition} 노트북에서의 출력\n",
118+
":class: note\n",
119+
"\n",
120+
"이 자료는 Jupyter 노트북 환경을 기준으로 한다.\n",
121+
"\n",
122+
"- 셀의 **마지막 식(expression)** 은 `print()` 없이도 결과가 화면에 표시될 수 있다.\n",
123+
"- `.py` 파일(스크립트)에서는 보통 `print()`를 써야 화면에 출력된다.\n",
124+
":::"
125+
]
126+
},
97127
{
98128
"cell_type": "markdown",
99129
"metadata": {},
@@ -503,7 +533,8 @@
503533
"metadata": {},
504534
"source": [
505535
"- 마침표 활용: `first.second`를 변수로 지정하면 마침표로 인해 `first`와 `second`가 구분된다.\n",
506-
" 그런데 `first`의 의미가 미리 지정되지 않았다는 의미의 이름 오류(`NameError`)가 발생한다."
536+
" 그런데 `first`의 의미가 미리 지정되지 않았다는 의미의 이름 오류(`NameError`)가 발생한다.\n",
537+
" (지금은 마침표 `.`을 변수 이름에 사용할 수 없다는 점만 기억하고, `객체/속성` 개념은 나중에 다룬다.)"
507538
]
508539
},
509540
{

starting.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# 프로그래밍 맛보기(Starting) — 진행안 & 체크리스트
2+
3+
이 문서는 프로그래밍 입문자를 대상으로 한 첫 수업(또는 첫 실습)에서
4+
[starting.ipynb](starting.ipynb)의 흐름을 기준으로 진행하기 위한 **시간 배분안****체크리스트**를 정리한 것이다.
5+
6+
## 수업 목표(학습자가 오늘 얻어가야 할 것)
7+
8+
- `print()`로 문자열을 출력할 수 있다.
9+
- 변수를 만들고(할당) 값이 어떻게 바뀌는지(재할당) 이해한다.
10+
- 기본 연산자 `+ - * / // % **`를 맛보고, 정수/부동소수점 결과 차이를 체감한다.
11+
- 오류를 “읽고-원인을 찾고-고친다”는 흐름을 경험한다.
12+
13+
## 수업 진행 범위(노트북 섹션 기준)
14+
15+
- # 프로그래밍 맛보기
16+
- ## Hello, world! 문자열 출력
17+
- ## 기초 명령문: 변수 할당
18+
- ## 변수 작성법
19+
- ## 변수 재할당
20+
- ## 파이썬 계산기
21+
- ## 예제
22+
- ## 연습문제
23+
24+
## 진행안(90분 권장)
25+
26+
- 0–5분: 오리엔테이션
27+
- 오늘 할 일(출력 → 변수 → 연산 → 예제/오류 수정)과 진행 방식(따라치기+실행)을 안내
28+
29+
- 5–20분: Hello, world + 문자열/따옴표 + `print()`
30+
- 목표: "코드 1줄 실행" 경험 확보
31+
- 체크: 따옴표(작은/큰) 규칙, `print()` 역할
32+
33+
- 20–40분: 변수/할당(핵심)
34+
- 목표: `a = 3` 같은 할당을 이해하고 `print(a)`로 확인
35+
- 체크: 변수는 "값 그 자체"가 아니라 "값을 가리키는 이름"이라는 말로 설명
36+
37+
- 40–55분: 변수 작성법(규칙은 실수 방지용)
38+
- 목표: 좋은 변수명(의미 있는 이름)과 기본 규칙을 익힘
39+
- 운영 팁: 키워드 목록은 “외우기”가 아니라 “이런 게 있어서 못 쓰는 이름이 있다” 정도
40+
41+
- 55–65분: 재할당과 `=`의 의미
42+
- 목표: `x = 5``x = 7`이 가능함을 경험
43+
- 체크: `=`은 수학의 ‘같다’가 아니라 “연결/할당”으로 설명
44+
45+
- 65–80분: 파이썬 계산기(연산자)
46+
- 목표: 연산자 표를 보고 예제로 확인
47+
- 운영 팁: `+ - * /`는 빠르게, `// % **`는 예시 1개씩만 확실히
48+
- 체크: `/`는 결과가 부동소수점이 될 수 있음, `//`는 몫(정수)
49+
50+
- 80–90분: 예제 + 숙제 안내
51+
- 수업 내: 예제 1(계산 문제) 1–2개만 같이 해결
52+
- 숙제: 예제 2(오류 수정) + 나머지 예제/연습문제
53+
54+
## 진행안(60분 압축)
55+
56+
- 0–5분: 오리엔테이션
57+
- 5–20분: Hello, world + 문자열/따옴표 + `print()`
58+
- 20–40분: 변수/할당(핵심)
59+
- 40–55분: 계산기(`+ - * /` + `//` 정도)
60+
- 55–60분: 과제 안내(변수 작성 규칙/오류 수정 예제는 과제로)
61+
62+
## 체크리스트(교사용)
63+
64+
### 수업 전
65+
66+
- [ ] 수업 시작 전에 학습자가 노트북을 열고 셀 실행(Shift+Enter)이 가능한지 확인
67+
- [ ] 실습 규칙 안내: “오류는 정상, 메시지 읽고 고친다”
68+
- [ ] 출력 방식 안내: 노트북에서는 셀의 마지막 식이 자동 출력될 수 있음을 1번만 짚고 시작
69+
70+
### 수업 중(필수 실행/확인)
71+
72+
- [ ] `print("Hello, world!")` 실행
73+
- [ ] 작은따옴표/큰따옴표 예시 실행
74+
- [ ] 변수 할당: `a = 3``print(a)` 실행
75+
- [ ] 변수 활용: `b = 2 * a``print(b)` 실행
76+
- [ ] `print(a, b)`처럼 여러 값 출력 실행
77+
- [ ] 변수명 비교 예시(`x, y` vs `A_score, B_score`) 실행
78+
- [ ] “안 되는 변수명” 예시를 통해 `SyntaxError`/`NameError`를 최소 1회는 경험
79+
- [ ] 재할당: `x = 5``x = 7``print(x)`로 확인
80+
- [ ] 연산자: `/``//` 차이를 예시로 확인
81+
82+
### 수업 후(숙제/마무리)
83+
84+
- [ ] 예제 2(오류 수정) 전체를 과제로 안내
85+
- [ ] 연습문제 링크(코랩/캐글/코드스페이스) 중 1개를 선택해 따라해보게 안내
86+
- [ ] 다음 시간 예고: 조건문/반복문/자료형으로 확장될 예정
87+
88+
## 운영 팁(짧게)
89+
90+
- 학습자가 “왜 어떤 코드는 `print()`가 없어도 결과가 보이지?”를 질문하면:
91+
- 노트북은 **셀의 마지막 식**을 편의상 보여주기도 하고,
92+
- `.py` 파일은 보통 `print()`를 써야 화면에 출력된다고 설명하면 충분하다.

0 commit comments

Comments
 (0)