Proc 53. Используя функцию IsLeapYear из задания Proc52, описать функцию MonthDays(M, Y) целого типа, которая возвращает количество дней для M-го месяца года Y (1 \(\leq\) M \(\leq\) 12, Y > 0 — целые числа). Вывести значение функции MonthDays для данного года Y и месяцев \(M_1, M_2, M_3\).

Решение на Python 3

import random

L = [2016,300,1300,1900,1200,2000,2018]

def IsLeapYear(Y):
result = False
if (Y%4 == 0) and not(Y%100 == 0 and Y%400 != 0):
result = True
return result

def MonthDays(M,Y):
if IsLeapYear(Y) and M == 2:
Days = 29
else:
m = {
1: 31,
2: 28,
3: 31,
4: 30,
5: 31,
6: 30,
7: 31,
8: 31,
9: 30,
10: 31,
11: 30,
12: 31
}
try:
Days = m[M]
except KeyError as e:
print('Ошибка')
return Days

for year in L:
s = "не високосный"
if IsLeapYear(year):
s = "високосный"
print(year," : ",s)

list_rnd = list(range(1, 13))
random.shuffle(list_rnd)
list_rnd = list_rnd[:3]
for month in list_rnd:
D = MonthDays(month,year)
print("Month -> ",month," : Days -> ",D)