تشخیص سال کبیسه در پایتون

آسانشرط

صورت سؤال

برنامه‌ای بنویسید که یک سال میلادی را از ورودی بخواند. اگر سال کبیسه بود «کبیسه» و در غیر این صورت «غیر کبیسه» را چاپ کنید.

این قاعده مخصوص تقویم میلادی است. تقویم هجری شمسی قاعدهٔ دیگری دارد و این برنامه برای سال شمسی جواب درست نمی‌دهد.

ورودی نمونه

1900

خروجی نمونه

غیر کبیسه

خودتان امتحان کنید

کد را در ویرایشگر زیر کامل کنید و اجرا کنید. ورودی نمونه در کادر ورودی آماده است و بعد از هر اجرا، خروجی شما با خروجی نمونه مقایسه می‌شود.

Ctrl + Enter
خروجی

کد را اجرا کنید تا خروجی آن اینجا نمایش داده شود.

راهنمایی

سه بخش‌پذیری را بررسی کنید: بر ۴، بر ۱۰۰ و بر ۴۰۰. سال کبیسه است اگر بر ۴۰۰ بخش‌پذیر باشد، یا بر ۴ بخش‌پذیر باشد و بر ۱۰۰ نباشد.

جواب و توضیح

بهتر است جواب را بعد از امتحان کردن راه خودتان باز کنید.

نمایش جواب
year = int(input())

if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
    print("کبیسه")
else:
    print("غیر کبیسه")

این جواب چطور کار می‌کند؟

بخش‌پذیری با عملگر باقی‌مانده بررسی می‌شود: year % 4 == 0 یعنی سال بر ۴ بخش‌پذیر است و year % 100 != 0 یعنی بر ۱۰۰ بخش‌پذیر نیست.

شرط دو حالت دارد که با or به هم وصل شده‌اند. حالت اول سال‌هایی مثل ۲۰۰۰ است که بر ۴۰۰ بخش‌پذیرند. حالت دوم سال‌هایی مثل ۲۰۲۴ است که بر ۴ بخش‌پذیرند ولی بر ۱۰۰ نه. پرانتز لازم نیست، چون and پیش از or حساب می‌شود، اما خواندن شرط را ساده‌تر می‌کند.

سال ۱۹۰۰ بر ۴ و بر ۱۰۰ بخش‌پذیر است، اما بر ۴۰۰ نه. هیچ‌کدام از دو حالت برقرار نیست و برنامه «غیر کبیسه» چاپ می‌کند. همین سال‌ها هستند که شرط ساده‌تر «بخش‌پذیر بر ۴» را غلط می‌کنند.

راه دوم: ماژول calendar

import calendar

year = int(input())

if calendar.isleap(year):
    print("کبیسه")
else:
    print("غیر کبیسه")

تابع calendar.isleap همین قاعده را پیاده کرده است و در برنامهٔ واقعی بهتر است از آن استفاده کنید. نوشتن شرط با دست برای تمرین منطق and و or مفید است.

اشتباه‌های رایج

  • فقط بخش‌پذیری بر ۴ را بررسی می‌کنند و سال‌هایی مثل ۱۹۰۰ را کبیسه می‌دانند.
  • شرط‌ها را با if و elif به ترتیب اشتباه می‌چینند؛ اگر اول بخش‌پذیری بر ۱۰۰ بررسی شود، سال ۲۰۰۰ غیر کبیسه حساب می‌شود.
  • همین قاعده را برای سال شمسی به کار می‌برند، در حالی که تقویم شمسی قاعدهٔ جداگانه‌ای دارد.

تمرین بعدی

پایتون را قدم‌به‌قدم یاد بگیرید

این تمرین یکی از تمرین‌های پایتون با جواب دینا کد است. در دورهٔ پایتون از صفر هر مفهوم یک درس کوتاه دارد و تمرین هر درس با چند آزمون پنهان نمره می‌گیرد؛ درس‌های اول رایگان است. برای امتحان کد آزاد هم اجرای آنلاین پایتون در دسترس است.