hhwjsbjweujskzks
30.12.2021 07:55

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

Задание № 7:

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

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

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
kkksun
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") вот эта болеее всех и задание который выводит название дня недели от числа введеного

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота