1日目のゴールと全体像
パスワード生成アプリ 1日目のテーマは 「Pythonの基本文法だけで“ランダムなパスワードを1つ生成する”ところまで作ること」 です。
この日はまだ複雑な設定やファイル保存は扱わず、 まずは 変数・条件分岐・繰り返し・関数・ランダム を使って 「動くパスワード生成器」を作ることが目標です。
パスワード生成の基本アイデア
パスワード生成の仕組みはとてもシンプルです。
- 使う文字の種類を決める
- 英字(小文字・大文字)
- 数字
- 記号
- パスワードの長さを決める(例:12文字)
- ランダムに文字を選んで並べる
この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. 変数は「値を覚えておく箱」
lowercaseuppercasenumberssymbolspassword
これらはすべて「後で使うために値を覚えておく」役割。
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日目:条件分岐で“使う文字”を選べるようにする


