以下は、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()
そのままコピーペーストして使用できます。
このコードの使い方
- プログラムを実行するとメニューが表示されます。
- 各選択肢に従って、日記の入力、表示、目標一覧の表示などができます。
- 日記のデータはJSON形式で
diary.json
ファイルに保存され、アプリを再起動してもデータが保持されます。
主な機能
- 日記の入力: 質問に答える形式で日記を記録します。
- 日記の表示: 指定した日付の日記や、指定した月の目標を表示できます。
- 全日記の表示: 保存された全ての日記を表示します。
改善するならここ
データベースに保存まではしないので、アプリを終了すると入力したデータが消えてしまいます。
それでは使えないので、時間があったらデータベースへ保存機能をつけたいですね。