آکادمی چابک | مرجع تخصصی جدیدترین دوره‌های آموزشی
جستجو برای:
سبد خرید 0
  • صفحه اصلی
  • دوره های آموزشی
  • اخبار و مقالات
  • درباره ما
  • تماس با ما
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]

ارسال مجدد کد یکبار مصرف (00:90)
  • 02177010771
  • info@chabokacademy.com
  • اخبار و مقالات
  • علاقمندی ها
آکادمی چابک | مرجع تخصصی جدیدترین دوره‌های آموزشی
  • صفحه اصلی
  • دوره های آموزشی
  • اخبار و مقالات
  • درباره ما
  • تماس با ما
شروع کنید
0

وبلاگ

آکادمی چابک | مرجع تخصصی جدیدترین دوره‌های آموزشی > اخبار و مقالات > کسب و کار > آموزش محاسبه سن در پایتون: چطور در پایتون سن افراد را محاسبه کنیم؟

آموزش محاسبه سن در پایتون: چطور در پایتون سن افراد را محاسبه کنیم؟

تیر 14, 1404
ارسال شده توسط ادمین آکادمی
کسب و کار
محاسبه سن با استفاده از سال تولد در پایتون

فهرست مطالب این نوشته

Toggle
  • چرا محاسبه سن به این سادگی‌ها هم نیست؟
    • روش اول: محاسبه سن در پایتون با ماژول datetime (روش استاندارد)
    • روش دوم: مدیریت خاص متولدین ۲۹ فوریه (Leap Year)
    • روش سوم: استفاده از تفاضل تعداد روزها
    • روش چهارم: استفاده از کتابخانه dateutil
  • یک مقایسه بین 4 روش: کدام بهتر است؟
  • 30 اسفند را چه کار کنیم؟
  • مثالی از بررسی سن قانونی
  • آیا از زبان‌های دیگر هم می‌توان الگوبرداری کرد؟
تعداد بازدید: 74
5/5 امتیاز

در روند ثبت‌نام سایت‌ها و اپلیکیشن‌ها، از کاربر تاریخ تولد دریافت می‌شود تا اطلاعات سن، برای بررسی شرایط عضویت یا نمایش محتواهای متناسب با سن استفاده شود. از بانک‌ها گرفته تا شبکه‌های اجتماعی دانستن سن واقعی کاربر یک الزام است.

chabokacademy
دوره‌های آموزشی آکادمی چابک
با تخفیف‌های ویژه آکادمی چابک، یادگیری را شروع کنید!
مشاهده دوره‌ها

پایتون روش‌های مختلف و دقیقی برای انجام این کار ارائه می‌دهد که هر کدام یک سری مزایای خاصی دارند. برای یادگیری 4 روش محاسبه سن در پایتون همراه‌مان باشید.

چرا محاسبه سن به این سادگی‌ها هم نیست؟

بعضی‌ها فکر می‌کنند برای محاسبه سن کافی است سال تولد را از سال جاری کم کنیم! ولی موضوع به این سادگی نیست. تولد گذشته یا نگذشته؟ سال کبیسه داریم یا نه؟ آیا تولد در ۲۹ فوریه (یا همان 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 کار می‌کند و هیچ کتابخانه جانبی نیاز ندارد.

نکته: با روش اول، محاسبه سن در پایتون حتی سال‌های کبیسه را نیز به‌درستی مدیریت می‌کند.

روش دوم: مدیریت خاص متولدین ۲۹ فوریه (Leap Year)

برای محاسبه سن در پایتون، یک مساله مهم وجود دارد و آن هم مدیریت تولدهایی است که در ۲۹ فوریه اتفاق می‌افتند. این روز فقط در سال‌های کبیسه وجود دارد و در سایر سال‌ها باید با دقت خاصی هندل شود.

کد پیشرفته برای مدیریت Leap Year:

راه‌های جدید کسب درآمد از اینترنت در ایران 2025
بخوانید

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
  • تبدیل خودکار ۲۹ فوریه به ۱ مارس در سال‌های غیرکبیسه
  • کاملاً منطبق با استانداردهای بین‌المللی

برای تبدیل تاریخ در پایتون نیز میتوانید از ابزارها و کتابخانه های نصبی پایتون یا کدنویسی اقدام کنید.

محاسبه سن از روی تاریخ تولد در c#

روش سوم: استفاده از تفاضل تعداد روزها

برای روش سوم می‌خواهیم راهکاری را بررسی کنیم که خیلی سریع و راحت است؛ اما به هیچ عنوان برای استفاده‌های رسمی پیشنهاد نمی‌شود.

برای مثال محاسبه سن با استفاده از سال تولد در پایتون به شرح زیر است:

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 است.

البته بسته به نیاز پروژه، می‌توانید از روش‌های دیگر هم استفاده کنید، اما همیشه دقت و عملکرد را در اولویت قرار دهید.

در صورتی که تمایل به یادگیری پایتون دارید و قصد دارید فهم مباحث را به شکل عمیق‌تر بهبود دهید، برای‌تان خبرهای خوبی داریم. ما در آکادمی چابک دوره‌هایی تخصصی و پروژه‌محور طراحی کرده‌ایم که دقیقاً به همین مهارت‌ها می‌پردازد. از مفاهیم پایه مثل کار با تاریخ و زمان گرفته تا ساخت اپلیکیشن‌های واقعی، همه چیز را به زبان ساده و با مثال‌های کاربردی آموزش می‌دهیم.

منبع:

www.geeksforgeeks.org

قبلی آموزش کامل تبدیل تاریخ در پایتون: تبدیل فرمت تاریخ در پایتون
بعدی علم نوروساینس چیست؟ کاربردهای نوروساینس در روان‌شناسی، هوش مصنوعی و زندگی روزمره

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • آموزش گرافیک کامپیوتری
  • امنیت و شبکه
  • برنامه نویسی
  • پایگاه داده
  • سیستم عامل
  • طراحی وب
  • کسب و کار
  • هوش مصنوعی
برچسب‌ها
MBA آموزش و کاربرد هوش مصنوعی اهداف شغلی بازاریابی محصول کسب و کار اینترنتی
logoacademy
آکادمی چابک با برگزاری دوره‌های جامع و تخصصی در حوزه‌ی نرم‌افزار، تحلیل کسب‌وکار و همچنین مشاوره‌های تخصصی در این حوزه‌ها سعی بر آن دارد تا علاقمندان پس از گذراندن دوره‌های مربوطه بتوانند از دانش و مهارت‌ خود بهترین استفاده را کرده و وارد بازار کار شوند.
 

ارتباط با ما

  • ۰۲۱۷۷۰۱۰۷۷۱
  • info@chabokacademy.com
  • حکیمیه، بلوار بابائیان، ۱۵ متری امام حسین، بن بست شفاعت، پلاک ۱۵، طبقه ۷

دسترسی سریع

  • خانه
  • دوره ها
  • اخبار و مقالات
  • تماس با ما
  • خانه
  • دوره ها
  • اخبار و مقالات
  • تماس با ما

نماد‌ها و خبرنامه

۱۴۰۲© کلیه حقوق سایت نزد آکادمی چابک محفوظ است.

  • Afghanistan (+93)
  • Albania (+355)
  • Algeria (+213)
  • American Samoa (+1)
  • Andorra (+376)
  • Angola (+244)
  • Anguilla (+1)
  • Antigua (+1)
  • Argentina (+54)
  • Armenia (+374)
  • Aruba (+297)
  • Australia (+61)
  • Austria (+43)
  • Azerbaijan (+994)
  • Bahrain (+973)
  • Bangladesh (+880)
  • Barbados (+1)
  • Belarus (+375)
  • Belgium (+32)
  • Belize (+501)
  • Benin (+229)
  • Bermuda (+1)
  • Bhutan (+975)
  • Bolivia (+591)
  • Bonaire, Sint Eustatius and Saba (+599)
  • Bosnia and Herzegovina (+387)
  • Botswana (+267)
  • Brazil (+55)
  • British Indian Ocean Territory (+246)
  • British Virgin Islands (+1)
  • Brunei (+673)
  • Bulgaria (+359)
  • Burkina Faso (+226)
  • Burundi (+257)
  • Cambodia (+855)
  • Cameroon (+237)
  • Canada (+1)
  • Cape Verde (+238)
  • Cayman Islands (+1)
  • Central African Republic (+236)
  • Chad (+235)
  • Chile (+56)
  • China (+86)
  • Colombia (+57)
  • Comoros (+269)
  • Cook Islands (+682)
  • Côte d'Ivoire (+225)
  • Costa Rica (+506)
  • Croatia (+385)
  • Cuba (+53)
  • Curaçao (+599)
  • Cyprus (+357)
  • Czech Republic (+420)
  • Democratic Republic of the Congo (+243)
  • Denmark (+45)
  • Djibouti (+253)
  • Dominica (+1)
  • Dominican Republic (+1)
  • Ecuador (+593)
  • Egypt (+20)
  • El Salvador (+503)
  • Equatorial Guinea (+240)
  • Eritrea (+291)
  • Estonia (+372)
  • Ethiopia (+251)
  • Falkland Islands (+500)
  • Faroe Islands (+298)
  • Federated States of Micronesia (+691)
  • Fiji (+679)
  • Finland (+358)
  • France (+33)
  • French Guiana (+594)
  • French Polynesia (+689)
  • Gabon (+241)
  • Georgia (+995)
  • Germany (+49)
  • Ghana (+233)
  • Gibraltar (+350)
  • Greece (+30)
  • Greenland (+299)
  • Grenada (+1)
  • Guadeloupe (+590)
  • Guam (+1)
  • Guatemala (+502)
  • Guernsey (+44)
  • Guinea (+224)
  • Guinea-Bissau (+245)
  • Guyana (+592)
  • Haiti (+509)
  • Honduras (+504)
  • Hong Kong (+852)
  • Hungary (+36)
  • Iceland (+354)
  • India (+91)
  • Indonesia (+62)
  • Iran (+98)
  • Iraq (+964)
  • Ireland (+353)
  • Isle Of Man (+44)
  • Israel (+972)
  • Italy (+39)
  • Jamaica (+1)
  • Japan (+81)
  • Jersey (+44)
  • Jordan (+962)
  • Kazakhstan (+7)
  • Kenya (+254)
  • Kiribati (+686)
  • Kuwait (+965)
  • Kyrgyzstan (+996)
  • Laos (+856)
  • Latvia (+371)
  • Lebanon (+961)
  • Lesotho (+266)
  • Liberia (+231)
  • Libya (+218)
  • Liechtenstein (+423)
  • Lithuania (+370)
  • Luxembourg (+352)
  • Macau (+853)
  • Macedonia (+389)
  • Madagascar (+261)
  • Malawi (+265)
  • Malaysia (+60)
  • Maldives (+960)
  • Mali (+223)
  • Malta (+356)
  • Marshall Islands (+692)
  • Martinique (+596)
  • Mauritania (+222)
  • Mauritius (+230)
  • Mayotte (+262)
  • Mexico (+52)
  • Moldova (+373)
  • Monaco (+377)
  • Mongolia (+976)
  • Montenegro (+382)
  • Montserrat (+1)
  • Morocco (+212)
  • Mozambique (+258)
  • Myanmar (+95)
  • Namibia (+264)
  • Nauru (+674)
  • Nepal (+977)
  • Netherlands (+31)
  • New Caledonia (+687)
  • New Zealand (+64)
  • Nicaragua (+505)
  • Niger (+227)
  • Nigeria (+234)
  • Niue (+683)
  • Norfolk Island (+672)
  • North Korea (+850)
  • Northern Mariana Islands (+1)
  • Norway (+47)
  • Oman (+968)
  • Pakistan (+92)
  • Palau (+680)
  • Palestine (+970)
  • Panama (+507)
  • Papua New Guinea (+675)
  • Paraguay (+595)
  • Peru (+51)
  • Philippines (+63)
  • Poland (+48)
  • Portugal (+351)
  • Puerto Rico (+1)
  • Qatar (+974)
  • Republic of the Congo (+242)
  • Romania (+40)
  • Reunion (+262)
  • Russia (+7)
  • Rwanda (+250)
  • Saint Helena (+290)
  • Saint Kitts and Nevis (+1)
  • Saint Pierre and Miquelon (+508)
  • Saint Vincent and the Grenadines (+1)
  • Samoa (+685)
  • San Marino (+378)
  • Sao Tome and Principe (+239)
  • Saudi Arabia (+966)
  • Senegal (+221)
  • Serbia (+381)
  • Seychelles (+248)
  • Sierra Leone (+232)
  • Singapore (+65)
  • Sint Maarten (+1)
  • Slovakia (+421)
  • Slovenia (+386)
  • Solomon Islands (+677)
  • Somalia (+252)
  • South Africa (+27)
  • South Korea (+82)
  • South Sudan (+211)
  • Spain (+34)
  • Sri Lanka (+94)
  • St. Lucia (+1)
  • Sudan (+249)
  • Suriname (+597)
  • Swaziland (+268)
  • Sweden (+46)
  • Switzerland (+41)
  • Syria (+963)
  • Taiwan (+886)
  • Tajikistan (+992)
  • Tanzania (+255)
  • Thailand (+66)
  • The Bahamas (+1)
  • The Gambia (+220)
  • Timor-Leste (+670)
  • Togo (+228)
  • Tokelau (+690)
  • Tonga (+676)
  • Trinidad and Tobago (+1)
  • Tunisia (+216)
  • Turkey (+90)
  • Turkmenistan (+993)
  • Turks and Caicos Islands (+1)
  • Tuvalu (+688)
  • U.S. Virgin Islands (+1)
  • Uganda (+256)
  • Ukraine (+380)
  • United Arab Emirates (+971)
  • United Kingdom (+44)
  • United States (+1)
  • Uruguay (+598)
  • Uzbekistan (+998)
  • Vanuatu (+678)
  • Venezuela (+58)
  • Vietnam (+84)
  • Wallis and Futuna (+681)
  • Western Sahara (+212)
  • Yemen (+967)
  • Zambia (+260)
  • Zimbabwe (+263)
ورود
با شماره موبایل
آیا هنوز عضو نشده اید؟ اکنون ثبت نام کنید
ثبت نام
قبلا عضو شده اید؟ اکنون وارد شوید
محافظت شده توسط