import streamlit as st # Function to calculate calories burned during swimming based on swim style, now in pounds def calories_swim(time_hr, weight_lb, style_mets): return (time_hr * style_mets * 3.5 * weight_lb) / 10 # Function to calculate calories burned during pull-ups based on grip style def calories_pullup(reps, weight, grip_style_factor): return (reps * 5 * weight) / 150 * grip_style_factor # Streamlit UI st.title("Calories Burned Calculator πŸŠβ€β™‚οΈπŸ’ͺ") st.sidebar.header("Input Parameters πŸ› οΈ") # Swimming parameters time_swim = st.sidebar.slider("Swimming Time (hours)", 0.0, 5.0, 2.0) weight = st.sidebar.number_input("Your weight (lbs)", 100, 300, 175) # Pull-Up parameters reps = st.sidebar.slider("Number of Pull-Ups", 0, 500, 200) # Choose Exercise Type st.sidebar.subheader("Choose Exercise Type πŸ€Έβ€β™‚οΈ") exercise_type = st.sidebar.selectbox( "", ["Swim Jim πŸŠβ€β™‚οΈ", "Ring King πŸ‘‘", "Both Boost πŸš€"] ) # Revised Swim Styles with METs to meet your requirement swim_styles = { "Treading Water 🌊": 6, "Backstroke πŸŠβ€β™‚οΈ": 9, "Breaststroke 🐸": 10, "Freestyle Light πŸ¦‹": 11, "Freestyle Vigorous πŸš€": 14.3, "Butterfly πŸ¦‹": 14.3, "Dog Paddle 🐢": 7 } # Grip Styles with factors grip_styles = { "Standard 🌟": 1, "Mixed Grip ✨": 1.1, "Wide Grip 🌠": 1.2 } st.sidebar.subheader("Choose Swim Style 🌊") swim_style = st.sidebar.selectbox( "", list(swim_styles.keys()) ) st.sidebar.subheader("Choose Ring Style πŸͺ") grip_style = st.sidebar.selectbox( "", list(grip_styles.keys()) ) # Calculation calories_from_swimming = calories_swim(time_swim, weight, swim_styles[swim_style]) calories_from_pullups = calories_pullup(reps, weight, grip_styles[grip_style]) # Display Results st.subheader(f"Calories Burned πŸ”₯") if exercise_type == "Swim Jim πŸŠβ€β™‚οΈ": st.write(f"Calories burned from swimming: {calories_from_swimming:.2f}") elif exercise_type == "Ring King πŸ‘‘": st.write(f"Calories burned from pull-ups: {calories_from_pullups:.2f}") else: total_calories = calories_from_swimming + calories_from_pullups st.write(f"Total calories burned: {total_calories:.2f}") st.subheader("Muscle Groups Worked 🦾") if exercise_type == "Swim Jim πŸŠβ€β™‚οΈ": st.write("Swimming works the back, shoulders, arms, and legs.") elif exercise_type == "Ring King πŸ‘‘": st.write("Pull-ups work the back, biceps, and forearms.") else: st.write("Doing both exercises works almost all major muscle groups!") st.subheader(f"Swim Style: {swim_style} 🌊") st.write(f"METS for chosen style: {swim_styles[swim_style]}") st.subheader(f"Ring Style: {grip_style} πŸͺ") st.write(f"Factor for chosen grip: {grip_styles[grip_style]}") # BMR Calculator import streamlit as st import pandas as pd import os from datetime import datetime # Constants GRAVITATIONAL_FORCE = 9.8 # Earth's gravitational force in m/s^2 POUND_TO_KG = 0.453592 # Conversion factor from pounds to kilograms INCH_TO_METER = 0.0254 # Conversion factor from inches to meters AVERAGE_CALORIES_MALE = 2500 # Average daily calorie burn for males AVERAGE_CALORIES_FEMALE = 2000 # Average daily calorie burn for females # Convert pounds to kilograms def pounds_to_kg(pounds): return pounds * POUND_TO_KG # Convert feet and inches to meters def feet_inches_to_meters(feet, inches): total_inches = feet * 12 + inches return total_inches * INCH_TO_METER # Calculate Basal Metabolic Rate def calculate_bmr(gender): return AVERAGE_CALORIES_MALE if gender == 'Male' else AVERAGE_CALORIES_FEMALE # Calculate Calories Burned Lifting Weights def calculate_calories_burned(mass_kg, height_diff, sets, reps): total_mass_lifted = mass_kg * sets * reps joules = total_mass_lifted * GRAVITATIONAL_FORCE * height_diff return joules / 4184 # Convert joules to kilocalories # Save to file def save_data(gender, height, weight, calories): filename = f"data_{datetime.now().strftime('%Y%m%d_%H%M%S')}.csv" df = pd.DataFrame({'Date': [datetime.now()], 'Gender': [gender], 'Height': [height], 'Weight Lifted (lbs)': [weight], 'Calories Burned': [calories]}) df.to_csv(filename, index=False) return filename # Load history def load_history(): files = [f for f in os.listdir('.') if f.startswith('data_')] return files # UI st.title('πŸ‹οΈ Personalized Calorie Counter for Weightlifting πŸ‹οΈ') with st.form('input_form'): gender = st.radio('Select your Gender:', ('Male', 'Female')) feet = st.number_input('Height (feet):', min_value=0, value=5) inches = st.number_input('Height (inches):', min_value=0, value=11) weight = st.number_input('Enter the weight lifted (lbs):', min_value=0.0, value=30.0) sets = st.number_input('Number of sets:', min_value=1, value=10) reps = st.number_input('Repetitions per set:', min_value=1, value=10) submitted = st.form_submit_button('Calculate') if submitted: height_meters = feet_inches_to_meters(feet, inches) weight_kg = pounds_to_kg(weight) bmr = calculate_bmr(gender) calories_burned = calculate_calories_burned(weight_kg, height_meters, sets, reps) save_file = save_data(gender, f'{feet}\'{inches}"', weight, calories_burned) st.success(f'πŸ”₯ Estimated Daily Calorie Burn (BMR): {bmr} kcal/day') st.success(f'πŸ”₯ Calories Burned in Session: {calories_burned:.4f} kcal') st.sidebar.success(f'πŸ“ Saved as {save_file}') # Display history st.sidebar.header('πŸ“š History') for file in load_history(): if st.sidebar.button(f'πŸ“… {file}', key=file): df = pd.read_csv(file) st.sidebar.write(df)