ミニ作品:パスワード自動生成器
Lv2のしめくくりです。パスワード自動生成器を作ります。文字・数字・記号のリストから乱数で選んで、毎回ちがう強いパスワードを作ります。リスト・乱数・関数・ループ、Lv2の総まとめ。
🧠 できるようになること
- リスト・乱数・関数・ループを組み合わせられる
- 実用的なツールを完成させる
- Lv2学習の達成感を得る
🧰 用意するもの
- パソコン
- ブラウザ(Chrome / Edge / Safari)
- インターネット接続
- このページの「▶ このページで実行」ボタン(コードをそのまま動かせます)
- Trinket(予備の実行サイト:https://trinket.io/python)
🖼 できあがり
パスワードの長さを聞いて、その長さの強いパスワードを自動生成。何個でも作れます。
📺 実行結果
何文字のパスワードを作る?: 12 生成されたパスワード: K#3pX$9q!aB7 何文字のパスワードを作る?: 8 生成されたパスワード: m4@Pz#1L 何文字のパスワードを作る?: 0 おわり!
🚀 やりかた
- アルファベット小文字・大文字・数字・記号のリストを作る。
- 全部を結合した
charsリストを作る。 def generate(length):で指定した長さのパスワード生成関数。- ループの中で
random.choice(chars)を length 回くりかえす。 - main で「文字数を聞く→生成→表示」をループ。0なら終了。
🐍 きょうのコード
Python
main.py
import random
def generate(length):
lower = list("abcdefghijklmnopqrstuvwxyz")
upper = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
digits = list("0123456789")
symbols = list("!@#$%^&*?")
chars = lower + upper + digits + symbols
password = ""
for i in range(length):
password += random.choice(chars)
return password
def main():
while True:
length = int(input("何文字のパスワードを作る?: "))
if length == 0:
print("おわり!")
break
pw = generate(length)
print(f"生成されたパスワード:\n{pw}")
main()
このページの「▶ このページで実行」でそのまま動きます。Trinketを使うときは、上のコードをコピーして左のエリアに貼り付け、Runボタン(▶)を押します。
💡 きょうのポイント
Lv2で学んだすべての要素(リスト・くりかえし・乱数・関数・while)を使った実用作品。実際に使えるパスワード生成ツールが、こんなに短いコードで作れます。
🎮 チャレンジ
- 「強さレベル(記号を含むかなど)」を選べるようにしよう
- 1回で5つパスワードを生成して並べよう
random.sampleで「同じ文字が2回出ないパスワード」も作ろう
🔁 ふりかえり
- Lv2で学んだ機能の中で、一番役に立ったものは?
- 実用的なツールを作るのは、楽しかった?
- 次のLv3では turtle で絵やゲームを作ります。何が起きると思う?
👨👩👧 おうちの人・先生へ
- 準備:なし。
- つまずきポイント:
list("abc")は['a', 'b', 'c']になる便利機能。 - 声かけ例:「実際にこのパスワードを使ってもいい?」「セキュリティの観点でどうか?」を話し合うと、社会的にも学べる回。
- 発展:
secretsモジュールを使うとさらに安全。中級で扱います。