Pythonミニ制作:パスワード生成ツールを作る

入門 | 12分 で読める | 2026.07.13

公式ドキュメント

今回やること

Pythonでパスワード候補を生成する場合は、予測されにくい乱数を扱う secrets を使います。学習やゲーム向けの random は、認証情報の生成には使いません。

ランダムな文字を組み合わせて、パスワードを生成します。

パスワード用途では、randomではなくsecretsを使うのが基本です。

完成コード

password_generator.py を作ります。

import secrets
import string


def create_password(length):
    characters = string.ascii_letters + string.digits
    password = ""

    for _ in range(length):
        password += secrets.choice(characters)

    return password


password = create_password(12)
print(password)
print(f"文字数: {len(password)}")

動作確認

python password_generator.py

12文字の英数字と 文字数: 12 が表示されれば成功です。

コードの考え方

  • string.ascii_letters は英字です
  • string.digits は数字です
  • secrets.choice() で安全寄りに1文字選びます
  • for で指定回数だけ文字を追加します

文字列の結合や文字種の扱いは Pythonの文字列操作 で、ゲーム用の乱数は Pythonのrandom入門 で分けて学べます。

よくあるエラー

エラー原因修正
NameErrorimportを書いていないimport secrets を確認
文字数が違うループ回数が違うrange(length) を確認
記号がない英数字だけにしている必要なら string.punctuation を追加

練習

  1. 16文字のパスワードを作る
  2. 記号も含める
  3. 5個まとめて生成する

生成した値をソースコード、スクリーンショット、公開リポジトリへ保存しないでください。このコードは乱数生成の練習であり、Webサービスのパスワード保存機能を自作する例ではありません。秘密情報を公開しない基本は APIキー・パスワード・個人情報を漏らさない基本秘密情報をGit管理から外す基本 で確認できます。

次のステップ

データ保存に進む場合は Pythonミニ制作:JSONファイルを読み書きする を読んでください。

参考リソース

← 一覧に戻る
PR
PR
PR
PR