Skip to content

Commit 6b50eb6

Browse files
committed
REPLの実行例に書き直させた
1 parent e077b47 commit 6b50eb6

File tree

3 files changed

+252
-202
lines changed

3 files changed

+252
-202
lines changed

app/[docs_id]/page.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ const components: Components = {
4141
h3: ({ node, ...props }) => (
4242
<h3 className="text-lg font-bold mt-4 mb-2" {...props} />
4343
),
44+
h4: ({ node, ...props }) => (
45+
<h4 className="text-base font-bold mt-3 mb-2" {...props} />
46+
),
4447
p: ({ node, ...props }) => <p className="mx-2 my-2" {...props} />,
4548
ul: ({ node, ...props }) => (
4649
<ul className="list-disc list-outside ml-6 my-2" {...props} />

docs/python-2.md

Lines changed: 98 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
他の言語での経験を活かし、Pythonの基本的な文法と組み込み型を素早くキャッチアップしましょう。特に、多くの静的型付け言語と異なる**インデントによるブロック表現****動的型付け**は、Pythonを理解する上で最初の重要なポイントです。
44

5-
## インデントが持つ意味: 波括弧 `{}` からの解放
5+
この章のコード例は、Pythonの対話モード(REPL)で `>>>` に続くコードを直接入力し、その直後に表示される結果を確認することを想定しています。
6+
7+
<!-- ## インデントが持つ意味: 波括弧 `{}` からの解放
68
79
多くのプログラミング言語では、`if`文や`for`ループなどのコードブロックを波括弧 `{}` で囲みます。しかし、**Pythonではインデント(字下げ)そのものがコードブロックを定義します**。これはPythonの構文における最大の特徴の一つです。
810
@@ -17,144 +19,164 @@ if (score > 80) {
1719
}
1820
```
1921
20-
**Pythonでのブロック表現:**
22+
**Pythonでの対話モード実行例:**
23+
対話モードで複数行のブロックを入力すると、継続行プロンプト `...` が表示されます。
2124
2225
```python
23-
score = 85
24-
if score > 80:
25-
# このブロックはインデントによって定義される
26-
print("合格です。")
27-
print("おめでとうございます!")
28-
29-
print("処理終了") # インデントが戻ると、ifブロックの外側
26+
>>> score = 85
27+
>>> if score > 80:
28+
... # このブロックはインデントによって定義される
29+
... print("合格です。")
30+
... print("おめでとうございます!")
31+
...
32+
合格です。
33+
おめでとうございます!
3034
```
3135
3236
インデントを間違えると `IndentationError` という文法エラーが発生します。これにより、誰が書いてもコードの見た目が統一され、可読性が高まるというメリットがあります。
37+
-->
3338

3439
## 変数宣言と動的型付け
3540

3641
静的型付け言語(Java, C++, C\#など)に慣れている方にとって、Pythonの変数宣言は非常にシンプルに感じられるでしょう。
3742

3843
**Pythonでは、変数の型を事前に宣言する必要はありません**。変数への代入が初めて行われたときに、変数が作成され、代入された値の型が自動的にその変数の型となります。これを**動的型付け**と呼びます。
3944

40-
```python
41-
# 変数 `count` は整数(int)型として自動的に解釈される
42-
count = 100
43-
print(f"値: {count}, 型: {type(count)}")
45+
変数名だけを入力してEnterキーを押すと、その時点での変数の値を確認できます。
4446

45-
# 同じ変数に別の型(文字列)を再代入できる
46-
count = ""
47-
print(f"値: {count}, 型: {type(count)}")
47+
```python
48+
>>> # 変数 `count` は整数(int)型として自動的に解釈される
49+
>>> count = 100
50+
>>> count
51+
100
52+
>>> type(count) # type()関数で現在の型を確認
53+
<class 'int'>
54+
55+
>>> # 同じ変数に別の型(文字列)を再代入できる
56+
>>> count = ""
57+
>>> count
58+
''
59+
>>> type(count)
60+
<class 'str'>
4861
```
4962

50-
上記の例のように、`count` という同じ名前の変数に、最初は整数を、次に文字列を代入できます。`type()` 関数は、変数が現在どの型を持っているかを確認するのに便利です。
51-
5263
## 基本的なデータ型
5364

54-
ここでは、プログラミングで頻繁に使用される基本的なデータ型を紹介します。
65+
ここでは、プログラミングで頻繁に使用される基本的なデータ型を紹介します。対話モードでは、式を評価した結果が直接表示されます。
5566

5667
### 数値 (`int`, `float`)
5768

5869
Pythonには整数 (`int`) と浮動小数点数 (`float`) があります。型の区別は自動的に行われます。
5970

6071
```python
61-
# 整数 (int)
62-
x = 10
63-
64-
# 浮動小数点数 (float)
65-
y = 3.14
66-
67-
# 演算
68-
print(x + y) # 結果は float になる -> 13.14
69-
print(x * 2) # -> 20
70-
print(x / 3) # 通常の除算 -> 3.333...
71-
print(x // 3) # 整数の除算(切り捨て) -> 3
72-
print(x % 3) # 剰余 -> 1
73-
print(x ** 3) # べき乗 -> 1000
72+
>>> x = 10
73+
>>> y = 3.14
74+
75+
>>> # 演算結果がそのまま表示される
76+
>>> x + y
77+
13.14
78+
>>> x * 2
79+
20
80+
>>> x / 3 # 通常の除算
81+
3.3333333333333335
82+
>>> x // 3 # 整数の除算(切り捨て)
83+
3
84+
>>> x % 3 # 剰余
85+
1
86+
>>> x ** 3 # べき乗
87+
1000
7488
```
7589

7690
### 文字列 (`str`)
7791

7892
文字列はシングルクォート `'` またはダブルクォート `"` で囲みます。どちらを使っても機能的な違いはありません。
7993

8094
```python
81-
message1 = "こんにちは、世界"
82-
message2 = 'Hello, World!'
95+
>>> message1 = "こんにちは、世界"
96+
>>> message2 = 'Hello, World!'
8397

84-
# 文字列の連結
85-
greeting = message1 + " & " + message2
86-
print(greeting)
98+
>>> # 文字列の連結
99+
>>> greeting = message1 + " & " + message2
100+
>>> greeting
101+
'こんにちは、世界 & Hello, World!'
87102

88-
# 文字列の繰り返し
89-
separator = "-" * 10
90-
print(separator) # -> ----------
103+
>>> # 文字列の繰り返し
104+
>>> "-" * 10
105+
'----------'
91106
```
92107

93-
**f-stringによるフォーマット**
108+
#### f-stringによるフォーマット
94109
他の言語での文字列フォーマット(`printf``String.format`)に相当するものとして、Python 3.6以降では**f-string**が推奨されます。非常に直感的で強力です。
95110

96111
文字列の前に `f` を置き、波括弧 `{}` の中に変数名や式を直接記述できます。
97112

98113
```python
99-
name = "佐藤"
100-
age = 28
101-
point = 88.5
114+
>>> name = "佐藤"
115+
>>> age = 28
102116

103-
# 従来の方法(少し面倒)
104-
# print("名前: " + name + ", 年齢: " + str(age) + "点")
117+
>>> # 従来の方法(少し面倒)
118+
>>> "名前: " + name + ", 年齢: " + str(age)
119+
'名前: 佐藤, 年齢: 28'
105120

106-
# f-string を使った方法(推奨✨)
107-
profile = f"名前: {name}, 年齢: {age}, 点数: {point}"
108-
print(profile) # -> 名前: 佐藤, 年齢: 28, 点数: 88.5
121+
>>> # f-stringを使って文字列を生成する
122+
>>> profile = f"名前: {name}, 年齢: {age}"
123+
>>> profile
124+
'名前: 佐藤, 年齢: 28'
109125

110-
# f-string内では計算も可能
111-
print(f"{name}さんは10年後、{age + 10}歳です。")
126+
>>> # f-string内では計算も可能
127+
>>> f"{name}さんは10年後、{age + 10}歳です。"
128+
'佐藤さんは10年後、38歳です。'
112129
```
113130

114131
### 真偽値 (`bool`)
115132

116133
真偽値は `True` または `False` の2つの値を持ちます。**先頭が大文字であることに注意してください**
117134

118135
```python
119-
is_active = True
120-
is_admin = False
121-
122-
# 論理演算子 (and, or, not)
123-
print(f"Active AND Admin: {is_active and is_admin}") # -> False
124-
print(f"Active OR Admin: {is_active or is_admin}") # -> True
125-
print(f"NOT Active: {not is_active}") # -> False
136+
>>> is_active = True
137+
>>> is_admin = False
138+
139+
>>> # 論理演算子 (and, or, not)
140+
>>> is_active and is_admin
141+
False
142+
>>> is_active or is_admin
143+
True
144+
>>> not is_active
145+
False
126146
```
127147

128148
## 型ヒント (Type Hints) の紹介
129149

130-
動的型付けはコードを素早く書ける一方で、大規模なプロジェクトやチーム開発では、関数がどのような型の引数を期待し、何を返すのかが分かりにくくなることがあります。
150+
動的型付けはコードを素早く書ける一方で、大規模なプロジェクトでは、関数がどのような型の引数を期待し、何を返すのかが分かりにくくなることがあります。
131151

132152
そこでPython 3.5から導入されたのが**型ヒント**です。これは、変数や関数の引数、戻り値に「期待される型」を注釈として付与する機能です。
133153

134-
**重要**: 型ヒントはあくまで「ヒント」であり、Pythonのインタプリタはこれを**実行時に強制しません**。しかし、エディタや静的解析ツール(MyPyなど)がこのヒントを解釈し、型の不一致を開発段階で警告してくれるため、コードの可読性と堅牢性が大幅に向上します。
154+
**重要**: 型ヒントはあくまで「ヒント」であり、Pythonのインタプリタはこれを**実行時に強制しません**。しかし、エディタや静的解析ツールがこのヒントを解釈し、型の不一致を開発段階で警告してくれるため、コードの可読性と堅牢性が大幅に向上します。
135155

136156
```python
137-
# nameはstr型、ageはint型を期待し、戻り値はstr型であることを示す
138-
def create_user_profile(name: str, age: int) -> str:
139-
return f"ユーザー名: {name}, 年齢: {age}"
140-
141-
# 正しい使い方
142-
user1 = create_user_profile("田中", 35)
143-
print(user1)
144-
145-
# 変数にも型ヒントを付けられる
146-
user_id: int = 101
147-
148-
# --- 型ヒントに反する使い方 ---
149-
# 警告が出る可能性があるが、実行はできてしまう
150-
user2 = create_user_profile("鈴木", "25歳") # ageに文字列を渡している
151-
print(user2) # -> ユーザー名: 鈴木, 年齢: 25歳
157+
>>> # nameはstr型、ageはint型を期待し、戻り値はstr型であることを示す
158+
>>> def create_user_profile(name: str, age: int) -> str:
159+
... return f"ユーザー名: {name}, 年齢: {age}"
160+
...
161+
>>> # 正しい使い方
162+
>>> user1 = create_user_profile("田中", 35)
163+
>>> user1
164+
'ユーザー名: 田中, 年齢: 35'
165+
166+
>>> # 変数にも型ヒントを付けられる
167+
>>> user_id: int = 101
168+
169+
>>> # --- 型ヒントに反する使い方 ---
170+
>>> # 静的解析ツールは警告を出す可能性があるが、実行はできてしまう
171+
>>> user2 = create_user_profile("鈴木", "25歳") # ageに文字列を渡している
172+
>>> user2
173+
'ユーザー名: 鈴木, 年齢: 25歳'
152174
```
153175

154176
静的型付け言語の経験者にとって、型ヒントは馴染みやすく、動的言語の柔軟性と静的解析の安全性を両立させるための強力なツールとなるでしょう。
155177

156178
-----
157179

158-
この章では、Pythonの構文の基礎となるインデントルール、柔軟な動的型付け、そして基本的なデータ型について学びました。特にf-stringと型ヒントは、モダンなPython開発における必須知識です。
180+
この章では、Pythonの構文の基礎となるインデントルール、柔軟な動的型付け、そして基本的なデータ型について対話モードで確認しながら学びました。特にf-stringと型ヒントは、モダンなPython開発における必須知識です。
159181

160182
次の章では、複数の要素をまとめて扱うための強力なデータ構造である**リスト****タプル**について詳しく見ていきます。

0 commit comments

Comments
 (0)