Григорианский календарь в порядковый

Порядковая дата содержит номер года и порядковый номер дня в этом году – оба в целочисленном формате. При этом год может быть любым согласно григорианскому календарю, а номер дня – числом в интервале от 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' )


Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: