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
pythonimport 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.
Leave a Reply