Python基本文法

この講座では、Pythonの基本的な文法について学びます。

  • コメントと四則演算
  • 変数の利用
  • データ型(int, float, str, bool)と型変換
  • 文字列の操作(結合、f-string)

1. 事前準備

この講座のハンズオンでは、以下のツールやアカウントが必要です。まだ準備できていない場合は、リンク先の手順に沿って準備をお願いします。

2. Pythonとは

数あるプログラミング言語の中で、本講座ではPythonを学びます。ここでは、Pythonの特徴と、どのような領域で活用されているかを紹介します。

2.1 Pythonの特徴

シンプルで読みやすい

Pythonは、シンプルで読みやすい文法が特徴の言語です。例えば、他の多くの言語ではコードのまとまり(ブロック)を波括弧 {} で表しますが、Pythonではインデント(字下げ)で表現します。これにより、誰が書いても自然と読みやすいコードになります。

以下は、PythonとJavaで同じ処理を書いた場合の比較です。

# Python
for i in range(3):
    print(i)
// Java
public class Main {
    public static void main(String[] args) {
        for (int i = 0; i < 3; i++) {
            System.out.println(i);
        }
    }
}

Pythonの方がシンプルで、処理の内容が直感的に理解しやすいことがわかります。こうした読みやすさは、チームで共同作業を行うDevOpsの現場でも大きなメリットになります。

ライブラリが豊富

Pythonには、さまざまな機能をすぐに使えるライブラリ(便利な機能をまとめたパッケージ)が豊富に用意されています。標準ライブラリに加えて、pip というパッケージ管理ツールを使えば、世界中の開発者が公開しているライブラリを簡単にインストールして利用できます。

Pythonでよく使われるライブラリの例を紹介します。

ライブラリ 用途
requests HTTPリクエストを送信する(API連携など)
FastAPI WebアプリケーションのAPI開発
boto3 AWSのリソースをPythonから操作する
NumPy 数値計算や配列操作を高速に行う
Pandas データの集計・分析・加工を行う
PyYAML YAML形式の設定ファイルを読み書きする

このように、ライブラリを活用することで、複雑な処理を少ないコードで実現できます。

インフラ領域との親和性が高い

Pythonは、インフラ領域で幅広く活用されています。AWSの公式SDK(boto3)はPythonで提供されており、サーバやストレージなどのリソースをコードから操作できます。また、AWS LambdaなどのサーバレスサービスでもPythonが実行環境としてサポートされており、サーバを管理することなくコードを実行できます。

さらに、AWS CDK(Cloud Development Kit)ではPythonを使ってインフラをコードで定義でき、Ansibleなどのインフラ自動化ツールもPythonで開発されています。

また、Pythonはシンプルな文法のおかげで、ログの集計やファイルの整理といったちょっとした自動化スクリプトを素早く書くのにも適しています。大規模な開発だけでなく、日常の運用作業を効率化する小さなツールの作成にも活用しやすい言語です。このように、インフラの現場ではPythonに触れる機会が多く、プログラミングの入門言語としてだけでなく、実務で直接活用できる点がPythonを学ぶ大きな理由です。

2.2 Pythonが使われる領域

続いて、Pythonがよく使われる代表的な領域を紹介します。

自動化・サーバレス開発

インフラの運用では、ファイルの整理、ログの解析、定期的なデータ収集など、繰り返しの作業が多く発生します。Pythonを使えば、こうした作業を自動化するスクリプトを手軽に作成できます。また、AWS Lambdaなどのサーバレスサービスでは、Pythonが実行環境として広くサポートされており、サーバを管理することなくコードを実行できます。エラー通知やリソースの定期チェックなど、インフラ運用に役立つ仕組みを手軽に構築できます。

Webアプリケーション開発

FastAPIやDjangoなどのフレームワークを使えば、PythonでWebアプリケーションのバックエンド(API)を開発できます。インフラエンジニアがアプリケーションの動作を理解するうえでも、Pythonで実際にWebアプリケーションを作る経験は大いに役立ちます。

AI・データ分析

Pythonは、AI(人工知能)やデータ分析の分野で最も広く使われている言語です。NumPyやPandasといったライブラリを使えばデータの集計や加工を効率的に行えるほか、scikit-learnやTensorFlowなどの機械学習ライブラリも充実しています。近年はChatGPTに代表される生成AIのAPIをPythonから呼び出して活用するケースも増えており、AIを組み込んだツールやアプリケーションの開発にもPythonが活躍しています。

3. まずはPythonを動かしてみよう

それでは早速、まずは簡単なプログラムを作成して、Pythonを実際に動かしてみましょう。

3.1 簡単なプログラムを動かしてみる

作業フォルダの作成

まず、任意の場所にpython-basicフォルダを作成します。

python-basic/  ← このフォルダを作成

作成したフォルダをVisual Studio Codeで開きます。Visual Studio Codeのメニューから「ファイル」→「フォルダーを開く」を選択し、作成したフォルダを開いてください。

ファイルの作成

Pythonのプログラムは .py という拡張子のファイルに記述します。Visual Studio Codeのエクスプローラーで右クリックし、「新しいファイル」を選択してmain.pyという名前で作成してください。

python-basic/
└── main.py  ← このファイルを作成

作成したファイルに以下の内容を記述して保存します。

print("Hello, Python!")

プログラムの実行

Visual Studio Codeのメニューから「ターミナル」→「新しいターミナル」を選択して、ターミナルを開きます。ターミナルは画面下部に表示され、先ほど開いた作業フォルダがカレントディレクトリとして設定された状態になっています。

ターミナルに以下のコマンドを入力して実行します。

Macの場合:

python3 main.py

Windowsの場合:

python main.py

実行すると以下のように出力されます。

Hello, Python!

画面に「Hello, Python!」と表示されれば成功です。このように、Pythonではファイルにコードを記述し、ターミナルからコマンドで実行するのが基本的な流れです。

💡 ポイント
macOSでは python3 main.py、Windowsでは python main.py コマンドで実行します。以降の講座では毎回コマンドを記載せず、「main.py を実行してください」のように記載しますので、お使いのOSに合わせたコマンドで実行してください。

以降のハンズオンでも、この main.py の内容を書き換えながら進めていきます。それでは、Pythonの基本的な文法を学んでいきましょう。

3.2 実行したコードの解説

先ほど実行したコードを振り返ってみましょう。

print("Hello, Python!")

この1行では、print() という関数を使っています。関数とは、特定の処理をまとめたもので、名前を指定して呼び出すことで処理を実行できます。print() は括弧の中に指定した値をターミナルに出力する関数です。関数についてはまた別途解説します。

括弧の中の "Hello, Python!"文字列と呼ばれるデータです。文字列はダブルクォーテーション " で囲んで記述します。つまり、このコードは「"Hello, Python!" という文字列をターミナルに表示する」という意味になります。

関数や文字列といった用語はこの後のセクションで詳しく学んでいきますので、ここでは「print() で画面に文字を表示できる」ということを覚えておきましょう。

3.3 Pythonのコード実行の流れ

ターミナルで python3 main.py を実行すると、まず python3 コマンドによってPythonの実行エンジン(インタプリタ)が起動します。次に、インタプリタが引数で指定された main.py ファイルを読み込み、ファイルの先頭から末尾に向かって、コードを上から順に1行ずつ実行していきます。すべての行の実行が完了すると、プログラムが終了してターミナルに戻ります。

このように、Pythonは書かれたコードを上から順番に1行ずつ解釈しながら実行する言語です。この仕組みを持つ言語をインタプリタ型言語と呼びます。

4. Pythonの基本文法

それでは、Pythonの基本文法を解説していきます。ここでは、コメント四則演算について解説します。

4.1 コメント

コメントは、プログラムの中に記述するメモや説明のことです。コメントはプログラムの実行時に無視されるため、コードの動作には影響しません。自分自身や他の開発者がコードの意図を理解しやすくするために使用します。

Pythonでは、# を使って1行コメントを記述します。main.py に以下の内容を記述して実行してみましょう。

# これはコメントです(実行されません)
print("Hello")  # 行の途中からもコメントを書ける

実行すると以下のように出力されます。

Hello

複数行にわたるコメントを記述する場合は、各行に # を付けます。

# このプログラムは
# Hello, World! と表示する
# 簡単なサンプルです
print("Hello, World!")

4.2 四則演算

基本的な四則演算

Pythonでは、数値に対して四則演算を行うことができます。main.py に以下の内容を記述して実行してみましょう。

# 足し算
print(20 + 10)

# 引き算
print(20 - 10)

# 掛け算
print(20 * 10)

# 割り算
print(20 / 10)

実行すると以下のように出力されます。

30
10
200
2.0

上から順に足し算、引き算、掛け算、割り算の結果が出力されています。割り算の結果が 2.0 と小数になっている点に注目してください。Pythonでは / による割り算は常に小数(float 型)の結果を返します。

その他の演算子

割り算に関連する演算子として、整数除算剰余(余り)があります。main.py に以下の内容を記述して実行してみましょう。

# 整数除算(小数点以下を切り捨て)
print(20 // 3)

# 剰余(割り算の余り)
print(20 % 3)

# べき乗(累乗)
print(2 ** 10)

実行すると以下のように出力されます。

6
2
1024

20 // 3 は小数点以下を切り捨てた 620 % 3 は割り算の余りの 22 ** 10 は2の10乗で 1024 が出力されています。

演算子の一覧をまとめます。

演算子 意味 結果
+ 足し算 20 + 10 30
- 引き算 20 - 10 10
* 掛け算 20 * 10 200
/ 割り算(小数) 20 / 3 6.666...
// 整数除算 20 // 3 6
% 剰余(余り) 20 % 3 2
** べき乗 2 ** 10 1024

演算の優先順位

数学と同様に、掛け算・割り算は足し算・引き算より優先されます。優先順位を明示したい場合は、括弧 () を使用します。main.py に以下の内容を記述して実行してみましょう。

# 掛け算が先に計算される
print(10 + 3 * 2)

# 括弧で優先順位を変更
print((10 + 3) * 2)

実行すると以下のように出力されます。

16
26

1つ目は 3 * 2 が先に計算されて 10 + 6 = 16、2つ目は括弧内の 10 + 3 が先に計算されて 13 * 2 = 26 になっています。

5. 変数の利用

5.1 変数とは

変数とは、値を格納するための「名前付きの入れ物」です。変数に値を格納することを代入といいます。一度変数に格納した値は、変数名を使って何度でも参照できます。

変数の代入と参照の流れを以下の図に示します。

graph LR
    A["値<br>例: 25"] -- "代入<br>age = 25" --> B["変数<br>age"]
    B -- "参照<br>print(age)" --> C["出力<br>25"]

Pythonでは、変数名 = 値 の形式で変数を定義します。main.py に以下の内容を記述して実行してみましょう。

# 変数に値を代入
name = "田中太郎"
age = 25

# 変数の値を出力
print(name)
print(age)

実行すると以下のように出力されます。

田中太郎
25
📝 = は「代入」を意味する
プログラミングにおける = は、数学の「等しい」ではなく、「右辺の値を左辺の変数に代入する」という意味です。「等しい」の比較には == を使用しますが、これは次の講座「Python制御構文」で学びます。

5.2 変数を使った計算

変数に格納された値を使って計算を行うことができます。main.py に以下の内容を記述して実行してみましょう。

# 変数に値を代入
price = 1500
quantity = 3

# 変数を使って計算
total = price * quantity

# 結果を出力
print("単価:", price)
print("数量:", quantity)
print("合計:", total)

実行すると以下のように出力されます。

単価: 1500
数量: 3
合計: 4500

price * quantity(1500 × 3)の計算結果 4500 が変数 total に格納され、出力されています。

5.3 変数の上書き

変数には、新しい値を代入して上書きすることができます。main.py に以下の内容を記述して実行してみましょう。

count = 10
print(count)

# 変数を上書き
count = 20
print(count)

# 変数自身を使った計算で上書き
count = count + 5
print(count)

実行すると以下のように出力されます。

10
20
25

変数自身を使った計算には、複合代入演算子を使うとより簡潔に書けます。

count = 10

count += 5   # count = count + 5 と同じ
print(count)

count -= 3   # count = count - 3 と同じ
print(count)

count *= 2   # count = count * 2 と同じ
print(count)

実行すると以下のように出力されます。

15
12
24

count の初期値 10 に対して、+= 515-= 312*= 224 と、演算のたびに変数の値が上書きされています。

5.4 変数名のルール

Pythonの変数名には以下のルールがあります。

ルール
英字(a-z, A-Z)、数字(0-9)、アンダースコア(_)が使用できる user_name, count1
数字で始まることはできない 1value は不可
大文字と小文字は区別される Namename は別の変数
Pythonの予約語(if, for, class など)は使用できない if は変数名にできない
💡 ポイント
Pythonでは、変数名にスネークケース(単語をアンダースコアで区切る形式)を使用するのが一般的です。例えば、userName ではなく user_name と記述します。これはPythonのコーディング規約であるPEP 8で推奨されている命名規則です。

6. データ型

6.1 主なデータ型

Pythonには、値の種類を表すデータ型があります。主なデータ型は以下の4つです。

データ型 説明
int 整数 10, -5, 0
float 小数(浮動小数点数) 3.14, -0.5, 2.0
str 文字列 "Hello", 'Python'
bool 真偽値 True, False

main.py に以下の内容を記述して実行してみましょう。

# int(整数)
age = 25
print(age, type(age))

# float(小数)
height = 170.5
print(height, type(height))

# str(文字列)
name = "田中太郎"
print(name, type(name))

# bool(真偽値)
is_student = True
print(is_student, type(is_student))

実行すると以下のように出力されます。

25 <class 'int'>
170.5 <class 'float'>
田中太郎 <class 'str'>
True <class 'bool'>
📝 type関数
type() 関数を使うと、変数に格納されている値のデータ型を確認できます。プログラムのデバッグ時に、変数の型が想定通りであるかを確認する際に便利です。

6.2 int型とfloat型の違い

整数同士の計算結果は int 型になりますが、小数が含まれる場合は float 型になります。main.py に以下の内容を記述して実行してみましょう。

# int同士の計算 → int
result1 = 10 + 3
print(result1, type(result1))

# floatが含まれる計算 → float
result2 = 10 + 3.0
print(result2, type(result2))

# 割り算は常にfloat
result3 = 10 / 2
print(result3, type(result3))

# 整数除算はint
result4 = 10 // 2
print(result4, type(result4))

実行すると以下のように出力されます。

13 <class 'int'>
13.0 <class 'float'>
5.0 <class 'float'>
5 <class 'int'>

整数同士の 10 + 3int 型ですが、float が含まれる 10 + 3.0float 型になっています。また、/(割り算)は常に float 型を返し、//(整数除算)は int 型を返します。

6.3 文字列の基本

文字列は、ダブルクォーテーション " またはシングルクォーテーション ' で囲んで記述します。どちらを使っても動作に違いはありません。main.py に以下の内容を記述して実行してみましょう。

# どちらでもOK
message1 = "Hello, Python!"
message2 = 'Hello, Python!'

print(message1)
print(message2)

# 文字列の中にクォーテーションを含める場合
message3 = "It's a great day"
message4 = '彼は"Python"が好きです'

print(message3)
print(message4)

実行すると以下のように出力されます。

Hello, Python!
Hello, Python!
It's a great day
彼は"Python"が好きです
💡 ポイント
文字列中にシングルクォーテーションを含める場合はダブルクォーテーションで囲み、ダブルクォーテーションを含める場合はシングルクォーテーションで囲むと、エスケープ文字を使わずに記述できます。

6.4 bool型

bool型は、True(真)または False(偽)の2つの値のみを持つデータ型です。条件の判定結果を表すために使われます。

変数名 = True   # 真
変数名 = False  # 偽

実際に試してみましょう。main.py に以下の内容を記述して実行してみましょう。

is_active = True
is_deleted = False

print(is_active)
print(is_deleted)

実行すると以下のように出力されます。

True
False

bool型は次の講座Python制御構文で条件分岐を学ぶ際に詳しく扱います。

6.5 型変換

Pythonでは、文字列と数値を直接結合したり、計算したりすることはできません。以下のコードはエラーになります。

age = 25
# print("年齢は" + age + "歳です")  # TypeError が発生する

このような場合、型変換を行って型を揃える必要があります。

Pythonには、値のデータ型を変換するための関数が用意されています。

関数 変換先
int() 整数に変換 int("10")10
float() 小数に変換 float("3.14")3.14
str() 文字列に変換 str(25)"25"
bool() 真偽値に変換 bool(1)True

main.py に以下の内容を記述して実行してみましょう。

# 数値を文字列に変換して結合
age = 25
message = "年齢は" + str(age) + "歳です"
print(message)

# 文字列を数値に変換して計算
price_str = "1500"
tax = int(price_str) * 0.1
print("税額:", tax)

# 小数を整数に変換(小数点以下は切り捨て)
pi = 3.14
print(int(pi))

実行すると以下のように出力されます。

年齢は25歳です
税額: 150.0
3
📝 型変換の注意点
数値に変換できない文字列を int()float() に渡すとエラーになります。例えば、int("abc")ValueError が発生します。ユーザ入力を数値に変換する場合は、入力値が正しい形式であることを確認する必要があります。

7. 文字列の操作

7.1 文字列の結合

文字列同士は + 演算子で結合できます。main.py に以下の内容を記述して実行してみましょう。

first_name = "太郎"
last_name = "田中"

# 文字列の結合
full_name = last_name + " " + first_name
print(full_name)

実行すると以下のように出力されます。

田中 太郎

last_name、空白 " "first_name の3つの文字列が + で結合され、田中 太郎 が出力されています。

7.2 f-string(フォーマット文字列)

f-stringは、文字列の中に変数の値を埋め込む便利な記法です。文字列の先頭に f を付け、埋め込みたい変数を波括弧 {} で囲みます。main.py に以下の内容を記述して実行してみましょう。

name = "田中太郎"
age = 25
height = 170.5

# f-stringで変数を埋め込む
print(f"名前: {name}")
print(f"年齢: {age}歳")
print(f"身長: {height}cm")

# f-stringの中で計算もできる
price = 1500
quantity = 3
print(f"合計金額: {price * quantity}円")

実行すると以下のように出力されます。

名前: 田中太郎
年齢: 25歳
身長: 170.5cm
合計金額: 4500円

f-stringを使えば、先ほどの型変換で紹介した str() を使った結合よりも簡潔に記述できます。

age = 25

# str()を使った結合(冗長)
print("年齢は" + str(age) + "歳です")

# f-stringを使った埋め込み(簡潔)
print(f"年齢は{age}歳です")
💡 ポイント
f-stringはPython 3.6以降で利用できる機能です。文字列と変数を組み合わせる場面ではf-stringを使うのが最も読みやすく、推奨される方法です。本講座でも以降、文字列の中に変数を埋め込む際はf-stringを使用します。

7.3 小数の桁数を指定する

f-stringでは、小数の表示桁数を指定することもできます。main.py に以下の内容を記述して実行してみましょう。

pi = 3.141592653589793

# 小数第2位まで表示
print(f"円周率: {pi:.2f}")

# 小数第4位まで表示
print(f"円周率: {pi:.4f}")

実行すると以下のように出力されます。

円周率: 3.14
円周率: 3.1416

:.2f2 は小数点以下の桁数、f は浮動小数点数(float)のフォーマットを意味します。

8. まとめ

この講座では、Pythonの基本的な文法について学びました。

  • コメント# で記述し、コードの説明に利用する
  • print関数で値をコンソールに出力できる
  • 四則演算に加え、整数除算 //、剰余 %、べき乗 ** が利用できる
  • 変数は値を格納する入れ物であり、変数名 = 値 で定義する
  • Pythonの主なデータ型は int(整数)、float(小数)、str(文字列)、bool(真偽値)の4つ
  • 型変換関数(int(), float(), str())で異なる型に変換できる
  • f-stringを使うと、文字列の中に変数の値を簡潔に埋め込める