ChatGPT4oでテキストベースの日記アプリを作成する

以下は、Python3でテキストベースの日記アプリを作成するコード例です。

このアプリは、ユーザーに順番に質問し、日記を入力させ、入力結果を表示します。

テキストベース日記アプリ(Python3)

import json
from datetime import datetime

# データを保存するファイル
FILENAME = "diary.json"

# データを読み込む関数
def load_diary():
    try:
        with open(FILENAME, 'r') as file:
            return json.load(file)
    except FileNotFoundError:
        return {}

# データを保存する関数
def save_diary(diary):
    with open(FILENAME, 'w') as file:
        json.dump(diary, file, indent=4, ensure_ascii=False)

# 日記を入力する関数
def input_diary():
    diary = load_diary()
    
    date = input("日付を入力してください(YYYY-MM-DD): ")
    if date == '':
        date = str(datetime.today().date())
    
    goals = input("今月の目標は何ですか?: ")
    actions = input("今日の行動計画は?: ")
    progress = input("今日の進捗は?: ")
    reflection = input("今日の反省点や学びは?: ")
    mindset = input("富豪のマインドセットについて考えたことは?: ")
    gratitude = input("感謝すべきことは何ですか?: ")
    
    diary_entry = {
        "goals": goals,
        "actions": actions,
        "progress": progress,
        "reflection": reflection,
        "mindset": mindset,
        "gratitude": gratitude
    }
    
    diary[date] = diary_entry
    save_diary(diary)
    print(f"{date}の日記が保存されました。")

# 指定した日付の日記を表示する関数
def show_diary_by_date():
    diary = load_diary()
    date = input("表示したい日付を入力してください(YYYY-MM-DD): ")
    if date in diary:
        print(f"\n{date} の日記:\n")
        for key, value in diary[date].items():
            print(f"{key}: {value}")
    else:
        print(f"{date} の日記は見つかりませんでした。")

# 指定した月の目標一覧を表示する関数
def show_goals_by_month():
    diary = load_diary()
    month = input("表示したい月を入力してください(YYYY-MM): ")
    goals_list = []
    
    for date, entry in diary.items():
        if date.startswith(month):
            goals_list.append(entry["goals"])
    
    if goals_list:
        print(f"\n{month} の目標一覧:\n")
        for i, goals in enumerate(goals_list, 1):
            print(f"{i}. {goals}")
    else:
        print(f"{month} の目標は見つかりませんでした。")

# 日記を全て表示する関数
def show_all_diaries():
    diary = load_diary()
    if diary:
        for date, entry in diary.items():
            print(f"\n{date} の日記:\n")
            for key, value in entry.items():
                print(f"{key}: {value}")
    else:
        print("日記がありません。")

# メインメニュー
def main():
    while True:
        print("\n日記アプリメニュー")
        print("1. 日記を入力する")
        print("2. 日付を指定して日記を表示する")
        print("3. 月を指定して目標の一覧を表示する")
        print("4. 全ての日記を表示する")
        print("5. アプリを終了する")
        choice = input("選択してください(1-5): ")
        
        if choice == '1':
            input_diary()
        elif choice == '2':
            show_diary_by_date()
        elif choice == '3':
            show_goals_by_month()
        elif choice == '4':
            show_all_diaries()
        elif choice == '5':
            print("アプリを終了します。")
            break
        else:
            print("無効な選択です。もう一度試してください。")

if __name__ == "__main__":
    main()

そのままコピーペーストして使用できます。

このコードの使い方

  1. プログラムを実行するとメニューが表示されます。
  2. 各選択肢に従って、日記の入力、表示、目標一覧の表示などができます。
  3. 日記のデータはJSON形式でdiary.jsonファイルに保存され、アプリを再起動してもデータが保持されます。

主な機能

  • 日記の入力: 質問に答える形式で日記を記録します。
  • 日記の表示: 指定した日付の日記や、指定した月の目標を表示できます。
  • 全日記の表示: 保存された全ての日記を表示します。

改善するならここ

データベースに保存まではしないので、アプリを終了すると入力したデータが消えてしまいます。

それでは使えないので、時間があったらデータベースへ保存機能をつけたいですね。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

上部へスクロール