آموزش محاسبه سن در پایتون: چطور در پایتون سن افراد را محاسبه کنیم؟
فهرست مطالب این نوشته
Toggleدر روند ثبتنام سایتها و اپلیکیشنها، از کاربر تاریخ تولد دریافت میشود تا اطلاعات سن، برای بررسی شرایط عضویت یا نمایش محتواهای متناسب با سن استفاده شود. اینجاست که محاسبه سن از روی تاریخ تولد در پایتون اهمیت پیدا میکند. از بانکها گرفته تا شبکههای اجتماعی دانستن سن واقعی کاربر یک الزام است و حتی در پروژههایی مثل برنامه محاسبه سن در پایتون یا سیستمهای احراز هویت نیز کاربرد دارد.
پایتون روشهای مختلف و دقیقی برای انجام این کار ارائه میدهد که هر کدام یک سری مزایای خاصی دارند. برای یادگیری 4 روش محاسبه سن در پایتون همراهمان باشید.
تخفیفهای شگفتانگیز جشنواره آکادمی چابک
تخفیف بگیر و ثبت نام کن!
چرا محاسبه سن به این سادگیها هم نیست؟
بعضیها فکر میکنند برای محاسبه سن در python کافی است سال تولد را از سال جاری کم کنیم! ولی موضوع به این سادگی نیست. تولد گذشته یا نگذشته؟ سال کبیسه داریم یا نه؟ آیا تولد در ۲۹ فوریه (یا همان 30 اسفند) است؟ همین موارد کافیاند تا بفهمیم اگر میخواهید سن را درست و دقیق محاسبه کنید، باید حرفهایتر به قضیه نگاه کنید.
روش اول: محاسبه سن در پایتون با ماژول datetime (روش استاندارد)
محاسبه سن در پایتون با datetime روش استاندارد و راحتی است که در ادامه بررسی کردهایم و یکی از بهترین راهها برای پیادهسازی کد محاسبه سن در پایتون محسوب میشود.
نمونه کد محاسبه سن در پایتون:
from datetime import date
def calculate_age(birthdate):
today = date.today()
age = today.year – birthdate.year – ((today.month, today.day) < (birthdate.month, birthdate.day))
return age
# مثال
print(calculate_age(date(2000, 1, 1))) # خروجی: 24
در این روش پایتون با استفاده از مقایسه (today.month, today.day) < (birthdate.month, birthdate.day) تشخیص میدهد که آیا تولد در سال جاری گذشته یا هنوز نرسیده است. در ضمن این نمونه کد محاسبه سن در پایتون بهصورت مستقیم با کلاس date کار میکند و هیچ کتابخانه جانبی نیاز ندارد
نکته: با روش اول، محاسبه سن در python حتی سالهای کبیسه را نیز بهدرستی مدیریت میکند.
روش دوم: مدیریت خاص متولدین ۲۹ فوریه (Leap Year)
برای محاسبه سن از روی تاریخ تولد در پایتون، یک مساله مهم وجود دارد و آن هم مدیریت تولدهایی است که در ۲۹ فوریه اتفاق میافتند. این روز فقط در سالهای کبیسه وجود دارد و در سایر سالها باید با دقت خاصی هندل شود. این روز فقط در سالهای کبیسه وجود دارد و در سایر سالها باید با دقت خاصی هندل شود.
کد پیشرفته برای مدیریت Leap Year:
from datetime import date
def calculate_age(born):
today = date.today()
try:
birthday = born.replace(year=today.year)
except ValueError:
birthday = born.replace(year=today.year, month=3, day=1)
return today.year – born.year – (birthday > today)
مزایا leap year چیست:
- جلوگیری از خطای ValueError
- تبدیل خودکار ۲۹ فوریه به ۱ مارس در سالهای غیرکبیسه
- کاملاً منطبق با استانداردهای بینالمللی
برای تبدیل تاریخ در پایتون نیز میتوانید از ابزارها و کتابخانه های نصبی پایتون یا کدنویسی اقدام کنید تا در پروژههایی مثل محاسبه سن آنلاین با پایتون به مشکل نخورید.
روش سوم: استفاده از تفاضل تعداد روزها
برای روش سوم میخواهیم راهکاری را بررسی کنیم که خیلی سریع و راحت است؛ اما به هیچ عنوان برای استفادههای رسمی پیشنهاد نمیشود.
برای مثال محاسبه سن در پایتون با استفاده از سال تولد به شرح زیر است:
from datetime import date
def calculate_age(birthdate):
days_per_year = 365.2425
age = int((date.today() – birthdate).days / days_per_year)
return age
محدودیتها:
- خطای حدودی ±۱ سال در موارد معدودی
- در محاسبات دقیق قابل اعتماد نیست.
این روش معمولاً در پروژههای سبک مثل برنامه محاسبه سن در پایتون استفاده میشود که حساسیت بالایی ندارند.
همین حالا ثبتنام کنید!
روش چهارم: استفاده از کتابخانه dateutil
اگر پروژهتان بزرگتر است و به دقتی بیشتر از تفریق ساده نیاز دارید، کتابخانه dateutil میتواند انتخاب خوبی باشد. به خصوص زمانی که باید با مناطق زمانی یا تاریخهای پیچیده کار کنید.
نصب:
pip install python-dateutil
کد پایتون محاسبه عمر کاربر با دریافت سن:
from dateutil.relativedelta import relativedelta
from datetime import date
def calculate_age(birth_date):
return relativedelta(date.today(), birth_date).years
یک مقایسه بین 4 روش: کدام بهتر است؟
| معیار | روش datetime | کتابخانه dateutil | تفاضل روزها |
|---|---|---|---|
| دقت مطلق | ✅ | ✅ | ❌ |
| نیاز به نصب کتابخانه | ❌ | ✅ | ❌ |
| مدیریت سال کبیسه | ✅ | ✅ | ❌ |
| پیچیدگی کد | متوسط | ساده | ساده |
| مناسب برای حقوقی | ✅ | ✅ | ❌ |
30 اسفند را چه کار کنیم؟
۲۹ فوریه یا 30 اسفند یک چالش در روند محاسبه سن در پایتون است. چرا؟ چون تولد فقط در سالهای خاصی وجود دارد. جالب است بدانید تنها ۰.۰۷٪ از مردم در این تاریخ به دنیا میآیند. اما همین درصد کم هم باید به درستی مدیریت شوند.
مثالی از بررسی سن قانونی
فرض کنید میخواهید مطمئن شوید کاربران شما بالای ۱۸ سال هستند.
from datetime import date
def calculate_age(birthdate):
today = date.today()
return today.year – birthdate.year – ((today.month, today.day) < (birthdate.month, birthdate.day))
def validate_age(birthdate, min_age=18):
return calculate_age(birthdate) >= min_age
birthdate = date(2010, 3, 15)
print(“واجد شرایط:” if validate_age(birthdate) else “غیرمجاز”)
آیا از زبانهای دیگر هم میتوان الگوبرداری کرد؟
بله! در محاسبه سن از روی تاریخ تولد در C# از کلاس DateTime و متد Subtract استفاده میشود. یا در برنامه محاسبه سن در C++، از کلاس chrono برای محاسبه فاصله زمانی استفاده میکنند. اما پایتون هم ساده و هم سریع است و به همین دلیل خیلی از توسعهدهندگان این زبان را ترجیح میدهند.

سخن پایانی
محاسبه سن در پایتون با ۴ روش قابل انجام است که معتبرترین آنها استفاده از ماژول datetime است.
البته بسته به نیاز پروژه، میتوانید از روشهای دیگر هم استفاده کنید، اما همیشه دقت و عملکرد را در اولویت قرار دهید.
در صورتی که تمایل به یادگیری پایتون دارید و قصد دارید فهم مباحث را به شکل عمیقتر بهبود دهید، برایتان خبرهای خوبی داریم. ما در آکادمی چابک دورههایی تخصصی و پروژهمحور طراحی کردهایم که دقیقاً به همین مهارتها میپردازد. از مفاهیم پایه مثل کار با تاریخ و زمان گرفته تا ساخت اپلیکیشنهای واقعی، همه چیز را به زبان ساده و با مثالهای کاربردی آموزش میدهیم.
سوالات متداول (FAQ)
بهترین روش محاسبه سن در پایتون چیست؟
بهترین و دقیقترین روش برای محاسبه سن در پایتون با datetime است؛ زیرا این روش بهصورت استاندارد تاریخ فعلی و تاریخ تولد را مقایسه میکند و سالهای کبیسه را نیز در نظر میگیرد.
چرا تفریق ساده سال تولد برای محاسبه سن در python دقیق نیست؟
زیرا در این روش مشخص نمیشود که آیا تولد فرد در سال جاری گذشته است یا خیر. در نتیجه ممکن است سن واقعی کاربر یک سال کمتر یا بیشتر محاسبه شود.
چگونه متولدین ۲۹ فوریه را در کد محاسبه سن در پایتون مدیریت کنیم؟
برای این کار باید از ساختار try/except استفاده کنید تا در سالهای غیرکبیسه، تاریخ تولد به ۱ مارس تبدیل شود و از بروز خطای ValueError جلوگیری گردد.
آیا میتوان از کد محاسبه سن در پایتون در اپلیکیشنهای موبایل هم استفاده کرد؟
بله، اگر از فریمورکهایی مانند Django یا Flask در بکاند استفاده کنید، این کدها بهراحتی در اپلیکیشنهای موبایل نیز قابل استفاده خواهند بود.
منبع:


دیدگاهتان را بنویسید