Порядковая дата содержит номер года и порядковый номер дня в этом году – оба в целочисленном формате. При этом год может быть любым согласно григорианскому календарю, а номер дня – числом в интервале от 1 до 366 (чтобы учесть високосные годы). Порядковые даты удобно использовать при расчете разницы в днях, когда счет ведется именно в днях, а не месяцах. Например, это может касаться 90-дневного периода возврата товара для покупателей, расчета срока годности товаров или прогнозируемой даты появления малыша на свет.
Напишите функцию с именем ordinalDate, принимающую на вход три целых числа: день, месяц и год. Функция должна возвращать порядковый номер заданного дня в указанном году. В основной программе у пользователя должны запрашиваться день, месяц и год соответственно и выводиться на экран порядковый номер дня в заданном году. Программа должна запускаться только в том случае, если она не импортирована в виде модуля в другой файл.
def ordinalDate( d, m, y ): is_leap = y % 400 == 0 or y % 4 == 0 and y % 100 != 0 month_days = [31,28+is_leap,31, 30,31,30, 31,31,30, 31,30,31] md = 0 for i in range(m-1): md += month_days[i] return md + d d, m, y = list( map( int, input( 'день, месяц, год: ' ).split() ) ) print( f'Порядковый номер дня в году: { ordinalDate(d,m,y) }\n' )
