import datetime class Journal: def __init__(self, journal_name): self.journal_name = journal_name self.journal_date = datetime.datetime.now().strftime('%Y-%m-%d') self.journal_ expenses = [] def add_expense(self, amount, category): if category not in ['正餐', '零食', '玩樂', '應酬', '學習']: raise ValueError('Invalid category') self.journal_expenses.append((category, amount)) def remove_expense(self, category): self.journal_expenses.remove((category, self.journal_expenses.index(category) + 1)) def list_expenses(self): if not self.journal_expenses: return [] expenses = [] for category, index in self.journal_expenses: expenses.append({'category': category, 'amount': self.journal_expenses[index]}) return expenses def save_journal(self, filename): with open(filename, 'w') as f: f.write(f'Date: {self.journal_date}\n') f.write(f'Expenses:\n') for category, index in self.journal_expenses: f.write(f'{category}: {self.journal_expenses[index]}\n') f.write(f'\n') if __name__ == '__main__': journal = Journal('Expense Journal') while True: print('Journal>') choice = input('Enter an option (add, remove, list, save): ') if choice == 'add': category, amount = input('Enter category: ').split(',') if not category or not amount: print('Invalid input') continue journal.add_expense(amount, category) elif choice == 'remove': category = input('Enter category: ').split(',')[0] journal.remove_expense(category) elif choice == 'list': journal.list_expenses() elif choice == 'save': filename = input('Enter filename: ') journal.save_journal(filename) else: print('Invalid choice')