[Pythonのはじめ方] Part12: 標準ライブラリの活用(math, datetime, randomなど)


Warning: Undefined array key “is_admin” in /home/c2261046/public_html/omomuki-tech.com/wp-content/themes/sango-theme/library/gutenberg/dist/classes/Toc.php on line 113

Warning: Undefined array key “is_category_top” in /home/c2261046/public_html/omomuki-tech.com/wp-content/themes/sango-theme/library/gutenberg/dist/classes/Toc.php on line 118

Warning: Undefined array key “is_top” in /home/c2261046/public_html/omomuki-tech.com/wp-content/themes/sango-theme/library/gutenberg/dist/classes/Toc.php on line 124

はじめに: 標準ライブラリって何? 🤔

Pythonの魅力の一つは、インストールしただけで使える便利な機能がたくさん用意されていることです。これを「標準ライブラリ」と呼びます。

標準ライブラリには、数学計算、日付や時刻の操作、乱数の生成、ファイル操作など、プログラミングでよく必要になる機能がモジュール(機能ごとにまとめられたファイル)として提供されています。これらのライブラリは、Pythonに最初から組み込まれているため、追加でインストールする必要はありません。

これらのモジュールを使うには、まずプログラムの冒頭でimport文を使って読み込む必要があります。

import モジュール名

さっそく、特によく使われるmath, datetime, randomモジュールを見ていきましょう!🚀

📐 数学計算はおまかせ! `math` モジュール

mathモジュールは、平方根、三角関数、対数、定数(円周率 π やネイピア数 e)など、高度な数学計算を行うための関数や定数を提供します。これらの機能はC言語の標準ライブラリに基づいています。

よく使う関数・定数

関数/定数 説明
math.sqrt(x) xの平方根を返す
math.pi 円周率 π (約3.14159)
math.e ネイピア数 e (約2.71828)
math.sin(x) / math.cos(x) / math.tan(x) 三角関数(xはラジアン単位)
math.log(x, base) xの対数を計算(baseを省略すると自然対数)
math.ceil(x) x以上の最小の整数(切り上げ)
math.floor(x) x以下の最大の整数(切り捨て)
math.pow(x, y) xのy乗を計算(結果は浮動小数点数)

使ってみよう!

import math

# 平方根
print(f"16の平方根: {math.sqrt(16)}")

# 円周率
print(f"円周率: {math.pi}")

# 切り上げと切り捨て
num = 3.14
print(f"{num}の切り上げ: {math.ceil(num)}")
print(f"{num}の切り捨て: {math.floor(num)}")

# べき乗
print(f"2の10乗: {math.pow(2, 10)}")

もっと詳しく知りたい方は、公式ドキュメントをチェックしてみてください。

math モジュール公式ドキュメント

🗓️ 日付と時刻を操る! `datetime` モジュール

datetimeモジュールは、日付や時刻の取得、操作、書式設定を行うためのクラスを提供します。プログラムで現在時刻を記録したり、特定の日付までの日数を計算したりするのに役立ちます。

主要なクラス

  • datetime.datetime: 日付と時刻の両方を持つ
  • datetime.date: 日付のみを持つ(年、月、日)
  • datetime.time: 時刻のみを持つ(時、分、秒、マイクロ秒)
  • datetime.timedelta: 2つの日時間の差や、特定の日時からの経過時間を表す
  • datetime.tzinfo: タイムゾーン情報を扱うための抽象基底クラス

使ってみよう!

import datetime

# 現在の日時を取得
now = datetime.datetime.now()
print(f"現在の日時: {now}")

# 今日の日付を取得
today = datetime.date.today()
print(f"今日の日付: {today}")

# 特定の日時を作成 (2025年1月1日 10時30分0秒)
specific_datetime = datetime.datetime(2025, 1, 1, 10, 30, 0)
print(f"特定の日時: {specific_datetime}")

# 日時の計算 (timedelta)
one_week = datetime.timedelta(weeks=1) # 1週間の期間
one_week_later = now + one_week
print(f"1週間後の日時: {one_week_later}")

# 2つの日付の差
date1 = datetime.date(2024, 12, 25)
date_diff = today - date1
print(f"{date1}から今日までの日数: {date_diff.days}日")

# 書式を指定して文字列に変換 (strftime)
# %Y: 4桁の年, %m: ゼロ埋めした月, %d: ゼロ埋めした日
# %H: 24時間表記の時, %M: 分, %S: 秒
formatted_now = now.strftime("%Y年%m月%d日 %H:%M:%S")
print(f"フォーマットされた日時: {formatted_now}")

# 文字列から日時に変換 (strptime)
date_string = "2023-12-31 23:59:59"
parsed_datetime = datetime.datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print(f"文字列から変換した日時: {parsed_datetime}")

strftimestrptimeで使う書式コードはたくさんあります。詳しくは公式ドキュメントを見てみましょう。

datetime モジュール公式ドキュメント

🎲 予測不能な動きを! `random` モジュール

randomモジュールは、乱数(ランダムな数)を生成するための関数を提供します。ゲーム開発、シミュレーション、データ分析のためのサンプリングなど、様々な場面で活用されます。このモジュールは、メルセンヌ・ツイスターというアルゴリズムをコアな生成器として使用しています。

よく使う関数

関数 説明
random.random() 0.0以上1.0未満の浮動小数点数の乱数を生成
random.randint(a, b) a以上b以下の整数の乱数を生成
random.choice(sequence) リストやタプルなどのシーケンスからランダムに要素を1つ選択
random.shuffle(list) リストの要素をランダムに並び替える(元のリストが変更される)
random.sample(population, k) シーケンスや集合から重複なしでランダムにk個の要素を選択し、新しいリストを返す

使ってみよう!

import random

# 0.0 から 1.0 未満の乱数
print(f"0.0以上1.0未満の乱数: {random.random()}")

# 1 から 6 までの整数の乱数 (サイコロ 🎲)
print(f"サイコロの目: {random.randint(1, 6)}")

# リストからランダムに選択
colors = ["red", "green", "blue", "yellow"]
chosen_color = random.choice(colors)
print(f"選ばれた色: {chosen_color}")

# リストをシャッフル
numbers = [1, 2, 3, 4, 5]
print(f"シャッフル前: {numbers}")
random.shuffle(numbers) # 元のリストが変更される
print(f"シャッフル後: {numbers}")

# リストからランダムに3つ選択 (重複なし)
sampled_colors = random.sample(colors, 3)
print(f"ランダムに3つ選択: {sampled_colors}")

注意点: randomモジュールで生成される乱数は「疑似乱数」と呼ばれ、完全に予測不可能ではありません。これは決定論的なアルゴリズムに基づいているためです。暗号化など、セキュリティが重要な用途にはsecretsモジュールを使うことが推奨されます。

乱数の世界は奥が深いです。公式ドキュメントも覗いてみてください。

random モジュール公式ドキュメント

まとめ 📚

今回は、Pythonの標準ライブラリの中から、特に重要なmath, datetime, randomモジュールを紹介しました。

  • math: 数学的な計算に役立つ関数や定数を提供します。
  • datetime: 日付や時刻の取得、操作、書式設定を簡単に行えます。
  • random: ゲームやシミュレーションなどで使える乱数を生成します。

これらのモジュールを使いこなせるようになると、Pythonでできることの幅がぐっと広がります。😊

標準ライブラリには、ここで紹介したもの以外にも便利なモジュールがたくさんあります(ファイル操作のためのospathlib、データ形式を扱うjsoncsv、正規表現を扱うreなど)。

ぜひ、Pythonの公式ドキュメントを探索して、どんな機能があるのか見てみてくださいね!

Python 標準ライブラリ (公式ドキュメント)