Categories We Write About

Create a workout logbook in Python

Here’s a simple but functional Workout Logbook implemented in Python. It allows users to:

  • Add workout entries

  • View all entries

  • Search by date

  • Save/load entries from a file

python
import json from datetime import datetime class WorkoutLogbook: def __init__(self, filename="workout_log.json"): self.filename = filename self.entries = [] self.load_entries() def load_entries(self): try: with open(self.filename, 'r') as file: self.entries = json.load(file) except FileNotFoundError: self.entries = [] def save_entries(self): with open(self.filename, 'w') as file: json.dump(self.entries, file, indent=4) def add_entry(self, date, exercise, sets, reps, weight): entry = { "date": date, "exercise": exercise, "sets": sets, "reps": reps, "weight": weight } self.entries.append(entry) self.save_entries() print("Workout entry added successfully.") def view_entries(self): if not self.entries: print("No workout entries found.") return for i, entry in enumerate(self.entries, start=1): print(f"{i}. Date: {entry['date']} | Exercise: {entry['exercise']} | Sets: {entry['sets']} | Reps: {entry['reps']} | Weight: {entry['weight']} kg") def search_by_date(self, date): found = [entry for entry in self.entries if entry["date"] == date] if not found: print(f"No entries found for {date}.") else: for entry in found: print(f"Exercise: {entry['exercise']} | Sets: {entry['sets']} | Reps: {entry['reps']} | Weight: {entry['weight']} kg") def main(): logbook = WorkoutLogbook() while True: print("nWorkout Logbook Menu:") print("1. Add Workout Entry") print("2. View All Entries") print("3. Search by Date") print("4. Exit") choice = input("Choose an option (1-4): ") if choice == '1': date = input("Enter date (YYYY-MM-DD): ") try: datetime.strptime(date, "%Y-%m-%d") # Validate date format except ValueError: print("Invalid date format. Please use YYYY-MM-DD.") continue exercise = input("Enter exercise name: ") sets = input("Enter number of sets: ") reps = input("Enter number of reps: ") weight = input("Enter weight used (kg): ") logbook.add_entry(date, exercise, sets, reps, weight) elif choice == '2': logbook.view_entries() elif choice == '3': date = input("Enter date to search (YYYY-MM-DD): ") logbook.search_by_date(date) elif choice == '4': print("Exiting Workout Logbook.") break else: print("Invalid choice. Please select from 1 to 4.") if __name__ == "__main__": main()

Features:

  • Persistent Storage: Entries are saved in workout_log.json.

  • User-Friendly CLI: Menu-based interface.

  • Date Validation: Ensures proper date format is used.

You can run this script in any Python environment. The workout log is saved between sessions.

Share This Page:

Enter your email below to join The Palos Publishing Company Email List

We respect your email privacy

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Categories We Write About