fork download
  1. import sqlite3
  2.  
  3. class ExpenseTracker:
  4. def _init_(self, db_name):
  5. self.conn = sqlite3.connect(db_name)
  6. self.cursor = self.conn.cursor()
  7. self.create_table()
  8.  
  9. def create_table(self):
  10. self.cursor.execute('''CREATE TABLE IF NOT EXISTS expenses
  11. (id INTEGER PRIMARY KEY, category TEXT, amount REAL)''')
  12. self.conn.commit()
  13.  
  14. def add_expense(self, category, amount):
  15. self.cursor.execute("INSERT INTO expenses (category, amount) VALUES (?, ?)", (category, amount))
  16. self.conn.commit()
  17.  
  18. def total_expenses(self):
  19. self.cursor.execute("SELECT SUM(amount) FROM expenses")
  20. total = self.cursor.fetchone()[0]
  21. return total if total else 0
  22.  
  23. def expenses_by_category(self):
  24. self.cursor.execute("SELECT category, SUM(amount) FROM expenses GROUP BY category")
  25. expenses_by_category = self.cursor.fetchall()
  26. return dict(expenses_by_category)
  27.  
  28. def print_expenses(self):
  29. print("Expense Tracker")
  30. print("--------------")
  31. self.cursor.execute("SELECT category, amount FROM expenses")
  32. for row in self.cursor.fetchall():
  33. print(f"{row[0]}: ${row[1]}")
  34.  
  35. def close(self):
  36. self.conn.close()
  37.  
  38. # Example usage:
  39. tracker = ExpenseTracker("expense_tracker.db")
  40. tracker.add_expense("Food", 50)
  41. tracker.add_expense("Transportation", 30)
  42. tracker.add_expense("Entertainment", 20)
  43. tracker.add_expense("Food", 25)
  44.  
  45. tracker.print_expenses()
  46.  
  47. print("Total expenses:", tracker.total_expenses())
  48. print("Expenses by category:", tracker.expenses_by_category())
  49.  
  50. tracker.close()-- your code goes here
Success #stdin #stdout #stderr 0.01s 5308KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Error: near line 1: near "import": syntax error