Python | 1 日 60 分 × 7 日アプリ学習:Python文法を学ぶアプリ 在庫管理編

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

商品管理(在庫管理)アプリ 1日目のゴール

1日目のテーマは 「商品を表す“データ構造”を作り、クラス・変数・条件分岐・繰り返し・関数・ファイル操作の基礎を体験すること」 です。

商品管理(在庫管理)は、初心者がプログラミングを学ぶうえで非常に良い題材です。 理由はシンプルで、

  • 商品という“現実のモノ”をプログラムで表現する
  • 在庫数や価格など、扱うデータがわかりやすい
  • クラス(オブジェクト指向)の学習に最適
  • 後日「検索」「並び替え」「入庫・出庫」「売上管理」などに発展できる

というメリットがあるからです。

1日目で作るアプリのイメージ

  • 商品名・価格・在庫数を入力
  • 商品オブジェクトを作成
  • ファイルに保存
  • 複数の商品を登録できる

この流れを作ることで、 変数・条件分岐・繰り返し・関数・ファイル操作・クラス をすべて体験できます。

クラスとは何か(初心者向けにかみ砕いて)

クラスとは 「データ(変数)と処理(関数)をひとまとめにした設計図」 です。

商品管理では、商品という“ひとまとまりの情報”を扱います。

例:

  • 商品名
  • 価格
  • 在庫数

これらをバラバラの変数で扱うと管理が大変です。 そこでクラスを使います。

商品クラスを作る(最重要)

class Product:
    """
    商品を表すクラス
    """
    def __init__(self, name, price, stock):
        self.name = name      # 商品名
        self.price = price    # 価格
        self.stock = stock    # 在庫数

    def to_text(self):
        """
        商品情報をテキスト形式に変換する(ファイル保存用)
        """
        return f"{self.name},{self.price},{self.stock}\n"
Python

深掘りポイント

  • __init__ は「商品を作るときに呼ばれる特別な関数」
  • self.name のように、商品ごとのデータを持てる
  • to_text() は「ファイル保存用の文字列を作る関数」

クラスを使うことで、商品データがひとまとまりになり、 扱いやすさが一気に向上します。

商品を登録する関数

def add_product():
    """
    商品を登録してファイルに保存する関数
    """
    name = input("商品名を入力してください: ")
    price = int(input("価格を入力してください(円): "))
    stock = int(input("在庫数を入力してください: "))

    product = Product(name, price, stock)

    with open("products.txt", "a", encoding="utf-8") as f:
        f.write(product.to_text())

    print("商品を登録しました。products.txt を確認してみてください。")
Python

深掘りポイント

  • 商品名・価格・在庫数を変数に保存
  • Product() で商品オブジェクトを作成
  • to_text() でファイルに保存できる形式に変換
  • "a" モードで追記保存

商品一覧を表示する関数

def show_products():
    """
    登録された商品一覧を表示する関数
    """
    try:
        with open("products.txt", "r", encoding="utf-8") as f:
            print("=== 商品一覧 ===")
            for line in f:
                name, price, stock = line.strip().split(",")
                print(f"商品名: {name} / 価格: {price}円 / 在庫: {stock}")
            print("================")
    except FileNotFoundError:
        print("まだ商品が登録されていません。")
Python

深掘りポイント

  • ファイルがない場合は FileNotFoundError をキャッチ
  • split(",") で商品データを分解
  • 繰り返し処理で全商品を表示

メニューを表示する関数

def show_menu():
    print("------------------------------")
    print("商品管理アプリ 1日目 メニュー")
    print("1: 商品を登録する")
    print("2: 商品一覧を表示する")
    print("3: 終了する")
    print("------------------------------")
Python

main(アプリ全体の流れ)

def main():
    print("Python 商品管理(在庫管理)アプリ 1日目")
    print("商品を登録して一覧表示できる最小のアプリを作ります。")

    while True:
        show_menu()
        choice = input("番号を入力してください(1〜3): ")

        if choice == "1":
            add_product()
        elif choice == "2":
            show_products()
        elif choice == "3":
            print("アプリを終了します。おつかれさまでした。")
            break
        else:
            print("1〜3 の番号を入力してください。")
Python

1日目の完成コード(まとめ)

class Product:
    def __init__(self, name, price, stock):
        self.name = name
        self.price = price
        self.stock = stock

    def to_text(self):
        return f"{self.name},{self.price},{self.stock}\n"


def add_product():
    name = input("商品名を入力してください: ")
    price = int(input("価格を入力してください(円): "))
    stock = int(input("在庫数を入力してください: "))

    product = Product(name, price, stock)

    with open("products.txt", "a", encoding="utf-8") as f:
        f.write(product.to_text())

    print("商品を登録しました。")


def show_products():
    try:
        with open("products.txt", "r", encoding="utf-8") as f:
            print("=== 商品一覧 ===")
            for line in f:
                name, price, stock = line.strip().split(",")
                print(f"商品名: {name} / 価格: {price}円 / 在庫: {stock}")
            print("================")
    except FileNotFoundError:
        print("まだ商品が登録されていません。")


def show_menu():
    print("------------------------------")
    print("商品管理アプリ 1日目 メニュー")
    print("1: 商品を登録する")
    print("2: 商品一覧を表示する")
    print("3: 終了する")
    print("------------------------------")


def main():
    print("Python 商品管理(在庫管理)アプリ 1日目")
    print("商品を登録して一覧表示できる最小のアプリを作ります。")

    while True:
        show_menu()
        choice = input("番号を入力してください(1〜3): ")

        if choice == "1":
            add_product()
        elif choice == "2":
            show_products()
        elif choice == "3":
            print("アプリを終了します。")
            break
        else:
            print("1〜3 の番号を入力してください。")


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

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

● クラスは「データと処理をひとまとめにする設計図」

商品という“ひとまとまりの情報”を扱うのに最適です。

● ファイル操作は「アプリに記憶を持たせる技術」

商品データが残ることで、アプリが“道具”として使えるようになります。

● 関数を分けることでアプリが整理される

登録・表示・メニュー・main が役割ごとに分かれ、理解しやすくなります。

次のステップ(2日目の予告)

2日目では、商品管理アプリをさらに育てて、

  • 商品検索
  • 在庫の増減(入庫・出庫)
  • 商品データの編集

という「商品管理アプリの基本形」を完成させていきます。

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