یکی از مشقهایی که در مسیر یادگیری پایتون باید انجام میدادم ساخت یه اپلیکیشن فیتنس بود. کارکردهای این اپلیکیشن نمایش وزن استاندارد، وزن ایدهآل، میزان مناسب مصرف کالری در هر روز و مواردی از این دست به همراه نمایش شاخصهای BMI و BMR هست.
یادمون باشه اینجا منظور من از اپلیکیشن فقط در بخش Backend هست و رابط کاربری وجود نخواهد داشت.
خب برای اینکار من اول از همه اومدم کتابخانههای math و statistics رو ایمپورت کردم به این دلیل که برای همچین اپلیکیشنی ما حجم زیادی از محاسبات ریاضی رو خواهیم داشت.
در مرحله بعد اومدم یکی یکی فانکشنها رو نوشتم. اولین فانکشن هم در واقع یه منو کاربری هست که بهش اجازه میده دستور مورد علاقه خودشو به اپلیکیشن بگه.
فانکشن بالا توضیح خاصی نیاز نداره. اومدیم به کاربر سلام کردیم و گفتیم کاری که میخوای اپ برات انجام بده رو انتخاب کن. بعد هم آیتمهای دستورالعمل اپ رو اضافه کردیم.
در ادامه رفتم سراغ فانکشنی که وظیفهاش نشون دادنه شاخص BMI هست. این فانکشن وزن (کیلوگرم) و قد (سانتیمتر) کاربر رو به عنوان داده ورودی میگیره و عدد این شاخص رو بهش نشون میده. نکتهاش همون فرمول محاسبه است که اینجا واردش کردیم و یه فرمول استاندارد داره که میشه از اینترنت پیدا کرد.
فانکشن بعدی هم تفسیر امتیاز شاخص BMI هست. اینجا در واقع داریم بر اساس بازه امتیاز کاربر، بهش میگیم که کجای نمودار خیلی لاغر تا خیلی چاق ایستاده.
در مرحله بعد رفتم سراغ شاخص BMR. به این شاخص «نرخ متابولیسم پایه» هم میگن. در واقع نشون دهنده میزان کالری هست که باید بسوزنیم تا زنده بمونیم. به عبارت دیگه نشون میده برای حداقلیترین فعالیتها مثل نفس کشیدن، چقدر کالری نیاز داریم.
نکتهای اینجا وجود داره اینه که عدد این شاخص برای خانمها و آقایان جداگانه حساب میشه و فرمولهای متفاوتی داره.
میزان مصرف کالری روزانه یکی از بخشهای مهم هر اپلیکیشن فیتنس و رژیم هست. من تو فانکشن پایین، این میزان رو برای مردها محاسبه کردم.
یادمون باشه که میزان کالری روزانه بر اساس عددی که تو فانکشن قبلی برای شاخص BMR به دست آوردیم، حساب میشه.
در فانکشن پایین هم همین کار رو برای خانمها انجام دادم.
یه چیز جالب دیگه اینه که بدونیم وزن استاندارمون چقدر باید باشه. بر خلاف وزن ایدهآل، رسیدن به وزن استاندارد آسونتره و میتونه در صورت استفاده از گیمیفیکشن داخل اپلیکیشن، نرخ رضایت کاربر رو افزایش بده، چون زودتر میتونه به این تارگت برسه.
فرمول محاسبه وزن استاندارد رو از اینترنت پیدا کردم و گذاشتمش داخل فانکشن پایین. این عدد برای من با وزن طبیعی ۶۴ کیلو، ۶۶ کیلو و ۷۰۰ گرم بوده ولی خب من بازم نمیتونم بهش برسم :((
فانکشن بعدی هم وزن ایدهآل رو به کاربر نشون میده. میدونید که خیلی کنجکاوید بدونید!! وزن ایدهآل برای من حدود ۸۴ کیلو هست. البته بیشتر کاربرهای این جور اپلیکیشنها افرادی هستند که میخوان بتکونن و لاغر کنن! ولی من میخوام چاق و چله شم.
خب میرسیم به قسمت جذاب داستان … ما از یه اپ رژیم و تناسب اندام انتظار داریم که بهمون بگه، چقدر باید کمتر یا بیشتر کالری بسوزونیم تا به وزن استاندارد مورد انتظارمون برسیم.
تو فانکشن پایین بر اساس شاخصهای BMR کاربر و یه سری ضریب استاندارد به کاربر خانم یا آقا میگیم که روزی چقدر باید کالری بسوزونه تا به هدف مورد نظرش برسه.
یه نکتهای که وجود داره اینکه از کاربر میپرسیم که طی چند روز میخواد به هدفش برسه و متغیر تعداد روز رو در محاسبههامون دخیل میکنیم.
خب ما تا الان تمام فانکشنهای مورد نیاز رو نوشتیم و حالا باید یه لوپ داشته باشیم تا اپلیکیشن به صورت درست اجرا بشه. اولین فانکشنی که فراخوانی کردمش مربوط به منو میشه. بعد از فانکشن منو، بر اساس شمارهای که کاربر به عنوان ورودی میفرسته، فانکشنهای مختلف رو اجرا میکنیم.
برای این منظور از while استفاده کردم و البته if و elif.
در نهایت در پنجره پایین، کد کامل رو میذارم که میتونید اجراش کنید. اون موقع میخواستم یه فیچری هم بهش اضافه کنم به عنوان گزارش کامل بدن؛ نشد و رفت توی کشوی کارهای انجام نشده.
شما میتونین با استفاده از همین کد قابلیتهای جدیدی هم بهش اضافه کنین از جمله پیشنهاد مصرف مواد غذایی مختلف که میتونه برای کاربر هم جذاب باشه.
پ.ن۱: ممکنه این کدها داخل کامپایلری که من اینجا گذاشتم درست اجرا نشده و بهتون ارور بده، بهتره از VScode استفاده کنید.
پ.ن۲: تو این اپلیکیشن نمیتونید از همون اول از اپ بخواید که وزن ایدهآل شما رو نشون بده، چون مستلزم این هست که دادههای مراحل قبل از جمله شاخصهای BMI و BMR رو قبلا به اپ داده باشید. البته این یک باگ محسوب میشه و من باید توی آپدیتهای بعدی اینو درست کنم.