Задание № 6: Напишите функцию output(year), которая для заданного года year (тип int) возвращает чего было больше воскресений или сред в этом году. Функция должна выдавать: 0 - если было больше воскресений; 1 - если больше сред; 2 - если количество воскресений такое же, как и количество сред.

Задание № 7:

В библиотеке переучет каждый третий четверг месяца. Напишите функцию output(date), которая по заданной дате date (тип datetime.date) возвращает количество дней до следующего переучета.

Забыл написать это если что Питон.

skybeast skybeast    1   29.05.2021 19:20    4

Ответы
pankovakseniya pankovakseniya  28.06.2021 19:22

def output(year): #начало функции output

   import datetime

   ans = datetime.date(year, 1, 1).strftime("%a") #выдаст название первого дня недели (за то что там в скобочках один один)

   print('отладочная информация')

   print('первый день недели',ans)

   #определяем колво дней которых нужно дождаться до среды

   if (ans == "Mon") : s = 2 #Пон

   elif (ans == "Tue") : s = 1 #Втор

   elif (ans == "Wed") : s = 0 #Среда

   elif (ans == "Thu") : s = 6

   elif (ans == "Fri") : s = 5

   elif (ans == "Sub") : s = 4

   elif (ans == "Sun") : s = 3

   print ('до среды осталось',s,'дней')

   #определяем колводней нужных до воскресенья

   if (ans == "Mon") : z = 6 #Пон

   elif (ans == "Tue") : z = 5 #Втор

   elif (ans == "Wed") : z = 4 #Сред

   elif (ans == "Thu") : z = 3

   elif (ans == "Fri") : z = 2

   elif (ans == "Sub") : z = 1

   elif (ans == "Sun") : z = 0 #Воскресенье

   print ('до воскресенья осталось',z,'дней')

   #Определяем високостный год

   if (year % 4 == 0) : leapyear=366 #366 дней

   else:  leapyear=365 #365 дней

   print ('всего дней в году ',leapyear)

   print ('сред ', (leapyear-s)//7)

   print ('воскр ',(leapyear-z)//7)  

   print('')

   #считаем и выводим итог

   if (((leapyear-z) // 7) > ((leapyear-s)//7)) : print ('результат 0') #делим на 7 (это промежуток между повтором дня недели) а дробное число отбрасываем далее сравниваем больше ли воскресений

   elif (((leapyear-z) // 7) < ((leapyear-s)//7)) : print ('результат 1') #делим на 7 (это промежуток между повтором дня недели) а дробное число отбрасываем далее сравниваем больше ли сред

   elif (((leapyear-z) // 7) == ((leapyear-s)//7)) : print ('результат 2') #делим на 7 (это промежуток между повтором дня недели) а дробное число отбрасываем далее сравниваем равенство ли

   else: print ('какаято ошибка')

   

   

output(2015) #запускаем функцию output(с2015годом) работает от 1 до 9999, разные результы у 2014,2015,2017

Объяснение:

план такой: определяем первое число года первого месяца падает на какой день  недели отсчитываем сколько дней нужно ждать до среды и отдельно до воскресенья  далее выяснив сколько дней в году у нас есть минусуем их прожданными днями до  первой среды и получившийся остаток дней так как мы на первой среде делим на  промежуток в семь дней до следующей среды и выясняем сколько этих сред таким  образом будет а дробный остаток выкидываем команда посчитать без остатка сразу  это // например 366 // 7 = итог целое колво дней без кусочков но это если первый  день сразу нужный попадется правда а теперь тоже самое дело для воскресений  сколько до перв. воскр. прождали вычтеным из нашего запаса дней оставшихся  до конца года пока ждали этого воскр. и делим узнаем колво воскресений в году  так между ними всегда 7 дней же промежуток кажись. Теперь воплощаем план

отдельное за приёмы как писать которые сильно крайне даже это задание этим людям из интернета мне не известных в точности за (year %4 ==0) и как им пользоватся чтобы високостный узнать и за datetime.date(year, 1, 1).strftime("%a") вот эта болеее всех и задание который выводит название дня недели от числа введеного

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика