Artık yılların bazı arızi “gizli” özelliklerine güvenmek istemiyorsanız (bölünebilirlikleri, bir yıldaki gün sayısı veya belirli bir günün varlığı gibi) uygun bir takvim kitaplığına sahip bir programlama dili kullanmalısınız işlevi. Python'un 1, 2'sini öneririm :calendar.isleap()
#!/usr/bin/python3
import sys
import traceback
import calendar
try:
year = int(sys.argv[1])
is_leap = calendar.isleap(year)
except:
traceback.print_exc()
sys.exit(2)
print(is_leap) # Print the year’s leap status
sys.exit(not is_leap) # Exit program with "success" if leap and "failure" otherwise
Kullanımı:
$ python3 is_leap.py 2000
True
$ python3 is_leap.py 2100
False
Veya tek astar olarak (uygun hata işleme olmadan):
$ python3 -c 'import sys, calendar; print(calendar.isleap(int(sys.argv[1])))' 2000
True
$ python3 -c 'import sys, calendar; sys.exit(not calendar.isleap(int(sys.argv[1])))' 2000
$ echo $?
0
1 Eminim basit bir eşdeğer Perl çözümü vardır.
2 Python'un calendar
modülü proleptik Gregoryen takvimini kullanır , yani G. takvimini süresiz olarak geçmişe ve geleceğe doğru genişletir. G. takviminin sadece 1582'de yürürlüğe girdiği veya bazı yerlilerin farklı artık yıl kurallarına sahip diğer takvimleri kullanmaya devam ettikleri dikkate alınmaz. Julian takvimi gibi başka takvimler için desteğe ihtiyacınız varsa, uygun bir Python genişletme modülü kurmanızı ve kullanmanızı öneririz.