Python | 1 日 60 分 × 7 日アプリ学習:Python文法を学ぶアプリ パスワード生成編

Web APP Python
スポンサーリンク
スポンサーリンク

1日目のゴールと全体像

パスワード生成アプリ 1日目のテーマは 「Pythonの基本文法だけで“ランダムなパスワードを1つ生成する”ところまで作ること」 です。

この日はまだ複雑な設定やファイル保存は扱わず、 まずは 変数・条件分岐・繰り返し・関数・ランダム を使って 「動くパスワード生成器」を作ることが目標です。

パスワード生成の基本アイデア

パスワード生成の仕組みはとてもシンプルです。

  1. 使う文字の種類を決める
    • 英字(小文字・大文字)
    • 数字
    • 記号
  2. パスワードの長さを決める(例:12文字)
  3. ランダムに文字を選んで並べる

この3ステップを Python のコードに落とし込んでいきます。

使う文字を変数でまとめる

まずは「使う文字」を変数にまとめます。

lowercase = "abcdefghijklmnopqrstuvwxyz"      # 小文字
uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"      # 大文字
numbers   = "0123456789"                      # 数字
symbols   = "!@#$%^&*()-_=+[]{};:,.<>?"       # 記号
Python

深掘りポイント

  • 文字列は「文字の集合」として扱える
  • "abc" のような文字列は、実は「リストのように1文字ずつ取り出せる」
  • 後で random.choice() で1文字ずつ選ぶために、この形が便利

パスワードの長さをユーザーに入力してもらう

length = int(input("生成するパスワードの長さを入力してください:"))
Python

深掘りポイント

  • input() は文字列を返すので int() で整数に変換する
  • 入力値を変数に入れることで、ユーザーが自由に長さを決められる

ランダムに文字を選ぶ(random.choice)

Python の random モジュールには 「リストや文字列からランダムに1つ選ぶ」 便利な関数があります。

import random

random.choice("ABC")  # → A, B, C のどれかがランダムに返る
Python

これを使って、パスワードの1文字を選びます。

パスワード生成を関数にまとめる

設計

  • 関数名:generate_password
  • 引数:length(パスワードの長さ)
  • 戻り値:生成したパスワード(文字列)
import random

def generate_password(length):
    """指定された長さのパスワードを生成する関数"""

    # 使う文字のセットをまとめる
    lowercase = "abcdefghijklmnopqrstuvwxyz"
    uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    numbers   = "0123456789"
    symbols   = "!@#$%^&*()-_=+[]{};:,.<>?"

    # すべての文字を結合して1つの文字集合にする
    all_chars = lowercase + uppercase + numbers + symbols

    password = ""  # 生成したパスワードを入れる変数

    # length 回繰り返して1文字ずつ追加する
    for _ in range(length):
        password += random.choice(all_chars)

    return password
Python

深掘りポイント

  • 繰り返し(for):パスワードの長さ分だけ文字を選ぶ
  • 変数password に1文字ずつ追加していく
  • 関数:処理を部品化することで main が読みやすくなる
  • 文字列結合password += "A" のように追加していく

1日目の完成コード:シンプルなパスワード生成器

ここまでの要素を全部つなげると、 「指定した長さのパスワードを1つ生成するアプリ」 が完成します。

import random

def generate_password(length):
    """指定された長さのパスワードを生成する関数"""

    # 使う文字のセット
    lowercase = "abcdefghijklmnopqrstuvwxyz"
    uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    numbers   = "0123456789"
    symbols   = "!@#$%^&*()-_=+[]{};:,.<>?"

    # すべての文字をまとめる
    all_chars = lowercase + uppercase + numbers + symbols

    password = ""

    # length 回繰り返してランダムに文字を選ぶ
    for _ in range(length):
        password += random.choice(all_chars)

    return password

def main():
    # パスワードの長さを入力してもらう
    length = int(input("生成するパスワードの長さを入力してください:"))

    # パスワード生成
    password = generate_password(length)

    # 結果を表示
    print("生成されたパスワード:", password)

if __name__ == "__main__":
    main()
Python

コードの重要ポイントを深掘り

1. 変数は「値を覚えておく箱」

  • lowercase
  • uppercase
  • numbers
  • symbols
  • password

これらはすべて「後で使うために値を覚えておく」役割。

2. 条件分岐はまだ最小限

1日目では条件分岐はほぼ使いませんが、 2日目以降で「数字を含めるか?」「記号を含めるか?」などで登場します。

3. 繰り返しは「同じ処理を何回もする」

パスワード生成では 「長さ分だけ文字を選ぶ」 という繰り返しが必須。

4. 関数は「処理のまとまり」

generate_password を作ることで、 main がとても読みやすくなる。

5. ファイル操作はまだ使わない

1日目では使いませんが、 3日目以降で「生成したパスワードを保存する」機能を追加します。

1日目で本当に掴んでほしいこと

1. 「動くものを作る」楽しさ

自分が入力した長さで、 本当にパスワードが生成される体験はとても大事。

2. ランダム処理は意外と簡単

random.choice() を使うだけで 「ランダムな文字を選ぶ」処理ができる。

3. 繰り返しと文字列結合の感覚

  • for _ in range(length):
  • password += random.choice(all_chars)

この2つが理解できれば、 パスワード生成の仕組みはほぼ完成。

次のステップ

2日目では、さらに一歩進んで

  • 数字を含めるか?記号を含めるか?を選べるようにする(条件分岐)
  • 複数のパスワードをまとめて生成する(繰り返し)

という「実用的なパスワード生成器」へ育てていきます。

続きはこちら パスワード生成 2日目:条件分岐で“使う文字”を選べるようにする

タイトルとURLをコピーしました