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
5869Pythonには整数 (` 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