Python: Pythonの基本構文と変数
それでは、いよいよ本格的なPythonコードの記述を始めましょう。まずは、最も基本的なルールであるインデント、コメント、そして変数について見ていきましょう。
1. インデントのルール
Pythonの最も特徴的な点は、中括弧の代わりにインデントを使ってコードブロックを定義することです {}。
TEXT
📖 参照専用
# ✅ Correct: consistent indentation within a block
if 3 > 1:
print("3 is greater than 1")
print("This line is also inside the if block")
# ❌ Error: inconsistent indentation
if 3 > 1:
print("3 is greater than 1")
print("Wrong indentation!") # IndentationError
⚠️ 黄金律:インデントには常に 4 スペース を使用し、タブは絶対に使用しないでください。ほとんどのエディタ(VS Code、PyCharm)では、タブキーを押すと自動的に 4 スペースに変換されます。
インデントは、if ステートメントだけでなく、ループ、関数、クラスなど、すべてのコードブロックに適用されます:
PYTHON
# Indentation in a for loop
for i in range(3):
print(i) # This line is inside the loop
print("---") # This line is also inside the loop
print("Done") # This line is NOT inside the loop
2. コメント
コメントは人間が読むためのものです。Pythonはコメントを完全に無視します。
(1) 1行コメント: #
PYTHON
# This is a single-line comment
print("Hello") # Comment after code
# Multi-line comments use multiple # symbols
# This is line two
# This is line three
(2) 複数行の文字列コメント:""" """ または ''' '''
厳密にはこれらは文字列ですが、一般的には複数行のコメントとして使われます:
PYTHON
"""
This is a multi-line comment
Useful for writing function descriptions
Or temporarily blocking out large blocks of code
"""
print("The multi-line string above won't execute")
3. 変数
Pythonの変数には型宣言は必要ありません。値を代入するだけで、すぐに使用できます:
PYTHON
name = "Alice" # str
age = 25 # int
height = 1.75 # float
is_student = True # bool
(1) 変数名の命名規則
| ルール | 正解 ✅ | 誤り ❌ |
|---|---|---|
| 英字、数字、アンダースコアのみ | my_name |
my-name |
| 数字で始まることはできません | var1 |
1var |
| 大文字と小文字を区別する | name と Name は異なる |
- |
| キーワードにはできません | - | if, for, class |
(2) 命名規則 (PEP 8)
TEXT
📖 参照専用
# ✅ Variables: lowercase with underscores (snake_case)
user_name = "Alice"
total_price = 99.9
max_value = 100
# ✅ Constants: ALL_CAPS with underscores
PI = 3.14159
MAX_SIZE = 1024
# ❌ Not recommended
userName = "Alice" # CamelCase (Java style)
UserName = "Alice" # Looks like a class name
(3) 複数の変数への代入
Pythonでは、1行で複数の変数に値を代入することができます:
PYTHON
# Assign multiple values at once
a, b, c = 1, 2, 3
print(a, b, c) # 1 2 3
# Swap two variables (other languages need a temporary variable)
x, y = 10, 20
x, y = y, x
print(x, y) # 20 10
# Assign the same value to multiple variables
m = n = p = 0
print(m, n, p) # 0 0 0
▶ サンプル:変数の型と入れ替え(難易度 ⭐)
PYTHON
# Define variables of different types
name = "Alice"
age = 25
height = 1.68
is_student = True
# Print variable info
print(f"{name} is {age} years old, {height}m tall")
print(f"Student status: {is_student}")
# Swap two variables
a, b = 10, 20
print(f"Before: a={a}, b={b}")
a, b = b, a
print(f"After: a={a}, b={b}")
# Check types
print(f"name type: {type(name)}")
print(f"age type: {type(age)}")
print(f"height type: {type(height)}")
出力:
TEXT
📖 参照専用
Alice is 25 years old, 1.68m tall
Student status: True
Before: a=10, b=20
After: a=20, b=10
name type: <class 'str'>
age type: <class 'int'>
height type: <class 'float'>
4. type() 関数
(2) ▶ サンプル:変数の型の探索 (難易度 ⭐)
PYTHON
x = 42
y = 3.14
z = "Hello"
w = True
print(f"x = {x}, type = {type(x).__name__}")
print(f"y = {y}, type = {type(y).__name__}")
print(f"z = {z}, type = {type(z).__name__}")
print(f"w = {w}, type = {type(w).__name__}")
print(f"\nint(y) = {int(y)}")
print(f"float(x) = {float(x)}")
print(f"str(x) = {str(x)}")
print(f"bool(0) = {bool(0)}, bool(1) = {bool(1)}")
var = 100
print(f"\nvar = {var}, type = {type(var).__name__}")
var = "now a string"
print(f"var = {var}, type = {type(var).__name__}")
出力:
TEXT
📖 参照専用
x = 42, type = int
y = 3.14, type = float
z = Hello, type = str
w = True, type = bool
int(y) = 3
float(x) = 42.0
str(x) = 42
bool(0) = False, bool(1) = True
var = 100, type = int
var = now a string, type = str
(3) ▶ サンプル:変数代入のテクニック (難易度 ⭐)
PYTHON
a, b, c = 10, 20, 30
print(f"a={a}, b={b}, c={c}")
x, y = 100, 200
print(f"Before swap: x={x}, y={y}")
x, y = y, x
print(f"After swap: x={x}, y={y}")
p = q = r = 0
print(f"p={p}, q={q}, r={r}")
colors = ["red", "green", "blue"]
first, second, third = colors
print(f"First: {first}, Second: {second}, Third: {third}")
出力:
TEXT
📖 参照専用
a=10, b=20, c=30
Before swap: x=100, y=200
After swap: x=200, y=100
p=0, q=0, r=0
First: red, Second: green, Third: blue
4. type() 関数
変数の型を確認するには、type() を使用します:
PYTHON
print(type(10)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type("Hello")) # <class 'str'>
print(type(True)) # <class 'bool'>
# Variables can change type when reassigned (dynamic typing)
x = 10
print(type(x)) # <class 'int'>
x = "Hello"
print(type(x)) # <class 'str'> ← type changed
5. よくある間違い
TEXT
📖 参照専用
# IndentationError: wrong indentation
print("Too much indentation")
print("This line has an extra space") # ❌
# NameError: variable not defined
print(z) # ❌ z was never assigned
# SyntaxError: invalid syntax
print("Hello) # ❌ quotes not closed
❓ よくある質問
Q なぜPythonは、他の言語のように中括弧
{} ではなく、インデントを使用しているのですか?A Pythonの生みの親であるグイド・ヴァン・ロッサムは、コードはまず人間が読みやすいものであるべきだと考えていました。インデントはコードの構造を視覚的に表現します。目で見ればすでに構造がわかるのですから、わざわざ余分な記号を必要とする必要はあるでしょうか?これにより、一貫した書式が強制され、ある種のバグ(中括弧の抜けや括弧の不一致など)が完全に排除されます。これは「美しいものは醜いものより優れている」という設計哲学に基づいています。
Q タブとスペースを混在させてしまいました。コードは問題なく見えますが、
IndentationErrorというエラーが発生します。なぜですか?A Pythonでは、タブとスペースは異なる文字として扱われます。タブでインデントされた行と4つのスペースでインデントされた行は、見た目では同じように見えますが、Pythonはそれらを別物として認識します。解決策:エディタの設定でタブをスペースに変換するようにしてください(VS Codeではデフォルトでこの設定になっています)。
python -m tabnanny myfile.py を使用して、インデントの混在をスキャンしてください。Q Pythonの動的型付けと、Javaなどの言語における静的型付けの違いは何ですか?その違いは重要ですか?
A 静的型付けの言語では、変数の型を事前に宣言し(
int x = 5;)、その型は変更できません。Pythonでは、型は実行時に決定され、変更可能です(x = 5; x = "hello"は動作します)。動的型付けは柔軟性が高く、コーディングも速く進められますが、型エラーは実行時にしか表面化しません。初心者にとっては、動的型付けは定型コードを減らすことができますが、大規模なプロジェクトでは、静的型付けの方がバグを早期に発見できます。Q 常に
NameError: name 'xxx' is not defined というエラーが表示されます。どうすれば直りますか?A NameError とは、Python がその名前の変数を見つけられないことを意味します。よくある原因:① 変数名のタイプミス(Python は大文字と小文字を区別します —
Name ≠ name); ② 代入する前に変数を使用している;③ 関数やループ内で定義された変数を、その外側からアクセスしようとしている。簡単な対処法:エラーが発生した行の前に print() を追加し、その時点で実際にどの変数が存在するかを確認してください。Q
= と == の違いは何ですか?いつも混同してしまいます。A
= は代入です。変数に値を割り当てるものです(x = 5 は「x の値が 5 になった」という意味です)。==は比較です。「これらは等しいか?」と尋ねます(x == 5はTrueまたはFalseを返します)。=を左を指す矢印(x ← 5)として、==を両側を確かめる天秤として考えてみてください。これは初心者が最もよく犯す間違いの一つで、if x == 5:の代わりにif x = 5:と書いてしまうことです。📖 まとめ
- Pythonでは、コードブロックを整理するために4スペースのインデントを使用します
- 1行のコメントには
#を、複数行のコメントには""" """を使用します - 変数には直接値を代入します。型宣言は必要ありません(動的型付け)。
- 変数名には
snake_case(小文字+アンダースコア)を使用する - 定数には、
MAX_VALUEと同様にALL_CAPSを使用します。 type()を使用して変数の型を確認する- 複数の変数を一度に割り当てることができます:
a, b = 1, 2
📝 練習問題
- 3つの変数、
city(都市名)、year(年)、score(得点 88.5)を定義するコードを記述し、print()を使用してそれらを出力してください。 - 変数
a = 5とb = 10を入れ替え、aを 10、bを 5 にする type()を使用して、True、"123"、および3.0のタイプを確認します。- 意図的にインデントエラーを含むコードを記述し、Pythonがどのようなエラーを発生させるかを確認し、そのエラーメッセージのスクリーンショットを撮ってください。