パスワードジェネレーター
Zee ねえ、上層部からパスワードの管理についてのセキュリティ通達が回ってきて、私が名指しで注意されちゃったの。恥ずかしい。簡単なパスワードジェネレーターを作ってくれない?長さを指定して、数字と記号を入れるかどうかをy/nで答えたら、実際に使えるものを出してくれるやつ。全アカウントで "password123" を使うのはやっぱり良くないよね…
作るもの
Password length: 12
Include numbers? (y/n): y
Include symbols? (y/n): y
Generated: k7#mP9xQ!2aL必要なもの
- 出力と入力 — ユーザーの設定を受け取る
- 文字列 — 文字、文字のリストを文字列に戻す
- リスト — 許可された文字のプールを構築・結合する
- モジュールと標準ライブラリ — 文字を選ぶための
random、組み込みの文字セットを使うためのstring
ヒント
まずプールを作る。 許可された文字を入れる空のリストから始めましょう。文字は常に追加し、ユーザーの選択に応じて数字や記号を条件付きで追加します。
string モジュールが手間を省いてくれる。 すぐに使える文字列が用意されています:string.ascii_letters、string.digits、string.punctuation。自分で打ち込む必要はありません。
選んで、つなげる。 random.choice() を使って一度に一文字ずつ選び、ユーザーが指定した長さの分だけ繰り返し、結果をひとつの文字列につなげます。
さらに進めるには
基本的なジェネレーターが動くようになったら:
- ルールを保証する。 ユーザーが数字を求めた場合、結果に少なくとも1つの数字が含まれるようにしましょう。記号も同様です。完全にランダムに選ぶと、それらが含まれない可能性があります。
- まとめて生成する。 複数のパスワードを一度に要求できるようにし、すべて表示しましょう。
- 強度インジケーター。 生成後に簡単な評価を表示しましょう:弱 (文字のみ)、中 (文字 + 数字)、強 (文字 + 数字 + 記号)。

