個人プロジェクト 演劇×デジファブ

chat GPTの助けを借りてpythonでシステムを作ってみる

  1. import os
  2. class Diary:
  3.     def __init__(self):
  4.         self.entries = []
  5.     def add_entry(self, entry):
  6.         self.entries.append(entry)
  7.     def get_entries(self):
  8.         return self.entries
  9.     def save_entries_to_file(self, filename):
  10.         with open(filename, 'w') as file:
  11.             for entry in self.entries:
  12.                 file.write(entry.to_string() + '\n')
  13.     def load_entries_from_file(self, filename):
  14.         self.entries = []
  15.         if os.path.exists(filename):
  16.             with open(filename, 'r') as file:
  17.                 for line in file:
  18.                     entry = DiaryEntry.from_string(line)
  19.                     if entry:
  20.                         self.add_entry(entry)
  21.     def remove_entry_by_title(self, title_to_remove):
  22.         self.entries = [entry for entry in self.entries if entry.title != title_to_remove]
  23.     # ... (existing code)
  24. class DiaryEntry:
  25.     def __init__(self, title, date, content, notes):
  26.         self.title = title
  27.         self.date = date
  28.         self.content = content
  29.         self.notes = notes
  30.     def to_string(self):
  31.         return f"{self.title},{self.date},{self.content},{self.notes}"
  32.     @staticmethod
  33.     def from_string(entry_string):
  34.         fields = entry_string.strip().split(',')
  35.         if len(fields) == 4:
  36.             return DiaryEntry(fields[0], fields[1], fields[2], fields[3])
  37.         return None
  38. def main_menu(diary):
  39.     while True:
  40.         print("=== メインメニュー ===")
  41.         print("1. 日記を書く")
  42.         print("2. 書いた日記のリストを見る")
  43.         print("3. 日記を削除する (タイトルで検索)")
  44.         print("0. 終了")
  45.         choice = input("選択肢を入力してください: ")
  46.         if choice == '1':
  47.             write_diary(diary)
  48.         elif choice == '2':
  49.             view_entries(diary)
  50.         elif choice == '3':
  51.             remove_entry_by_title(diary)
  52.         elif choice == '0':
  53.             break
  54.         else:
  55.             print("無効な選択肢です。もう一度選んでください。")
  56. def write_diary(diary):
  57.     print("=== 日記を書く ===")
  58.     title = input("タイトルを入力してください: ")
  59.     date = input("日付を入力してください: ")
  60.     content = input("本文を入力してください: ")
  61.     notes = input("備考を入力してください: ")
  62.     entry = DiaryEntry(title, date, content, notes)
  63.     diary.add_entry(entry)
  64.     print("日記が保存されました。")
  65. def view_entries(diary):
  66.     print("=== 書いた日記のリスト ===")
  67.     entries = diary.get_entries()
  68.     if not entries:
  69.         print("日記がまだありません。")
  70.         return
  71.     for index, entry in enumerate(entries, start=1):
  72.         print(f"{index}. {entry.title} - {entry.date}")
  73.     choice = input("詳細を見る日記の番号を入力してください (0: 戻る): ")
  74.     if choice == '0':
  75.         return
  76.     try:
  77.         index = int(choice) - 1
  78.         entry = entries[index]
  79.         view_entry_details(entry)
  80.     except (ValueError, IndexError):
  81.         print("無効な選択肢です。もう一度選んでください。")
  82. def view_entry_details(entry):
  83.     print("=== 日記の詳細 ===")
  84.     print(f"タイトル: {entry.title}")
  85.     print(f"日付: {entry.date}")
  86.     print(f"本文: {entry.content}")
  87.     print(f"備考: {entry.notes}")
  88. def remove_entry_by_title(diary):
  89.     print("=== 日記の削除 ===")
  90.     title_to_remove = input("削除する日記のタイトルを入力してください: ")
  91.     diary.remove_entry_by_title(title_to_remove)
  92.     print(f"タイトルが '{title_to_remove}' の日記が削除されました。")
  93. # メインの実行部分
  94. def main():
  95.     diary = Diary()
  96.     filename = 'diary_entries.txt' # ファイル名は必要に応じて変更してください
  97.     diary.load_entries_from_file(filename)
  98.     main_menu(diary)
  99.     diary.save_entries_to_file(filename)
  100. if __name__ == '__main__':
  101.     main()
イメージ画像


前のページに戻る