今回やること
ランダムな文字を組み合わせて、パスワードを生成します。
パスワード用途では、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で指定回数だけ文字を追加します
よくあるエラー
| エラー | 原因 | 修正 |
|---|---|---|
NameError | importを書いていない | import secrets を確認 |
| 文字数が違う | ループ回数が違う | range(length) を確認 |
| 記号がない | 英数字だけにしている | 必要なら string.punctuation を追加 |
練習
- 16文字のパスワードを作る
- 記号も含める
- 5個まとめて生成する
次のステップ
データ保存に進む場合は Pythonミニ制作:JSONファイルを読み書きする を読んでください。