Вопрос Определить, на какой день недели выпадает дата в pythone

Регистрация
6 Май 2013
Сообщения
69
Репутация
0
Спасибо
0
Монет
0
Ада хочет определить, выпадает ли ее День рождения в следующем году на выходной день (субботу или воскресенье). Напишите функцию, которая поможет ей это проверить.



Для решения задачи воспользуйтесь функцией weekday модуля calendar, которая по дате определяет день недели. Функция weekday принимает в качестве параметра три целых числа: год, месяц и день соответственно. Возвращает она номер дня недели (отсчет начинается с 0 и понедельника).



ТРЕБУЕМАЯ ФУНКЦИЯ



*Функция is_birthday_weekend, которая принимает в качестве параметров дату рождения (строку в формате 'dd-mm-yyyy') и год, для которого нужно осуществить проверку (целое число).

*Если в указанном году День рождения выпадает на субботу или воскресенье, функция должна вернуть строку 'Ура, выходной в День рождения!', иначе — строку 'В День рождения придется поработать.'
 
import datetime
import calendar

def is_birthday_weekend(birthday_date, year):

birthday = datetime.datetime.strptime(birthday_date, '%d-%m-%Y')


birthday = birthday.replace(year=year)


weekday = birthday.weekday()


if weekday == calendar.SATURDAY or weekday == calendar.SUNDAY:
return 'Ура, выходной в День рождения!'
else:
return 'В День рождения придется поработать.'
 
только свои велосипеды! def is_birthday_weekend(ddmmyyyy, y) :

d, m = list(map(int, ddmmyyyy.split("-")))[:2]

if m < 3 :
m, y = m+10, y-1
else :
m -= 2

c, y = y//100, y%100

x = (int(2.6 * m - .2) + d + y//4 + y + c//4 - 2 * c)%7

#print (("воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота")[x])
return ("В День рождения придется поработать.", "Ура, выходной в День рождения!")[x in (0, 6)]

print(is_birthday_weekend("07-10-1952", 2023))
 
Чисто одним модулем calendar, без datetime, которого в условии задачи нет import calendar
c = calendar.Calendar(0)
year = []
months = ['январь','февраль','март','апрель','май','июнь','июль','август','сентябрь','октябрь','ноябрь','декабрь']
days_of_week = ['понедельник','вторник','среда','четверг','пятница','суббота','воскресенье']
inp = input('число месяц год через пробел ').lower().split()
for i in range(1, 13):
year.append(c.monthdayscalendar(int(inp[2]),i))
m = months.index(inp[1])
for i in year[m]:
for k in i:
if k == int(inp[0]):
result = i.index(k)
break
try:
print(days_of_week[result])
except NameError:
print("Неправильная дата")
 
имхо, такие проги уже есть...
проще всего оперировать юлианскими датами.
получается простая арифметика.
 
Назад
Сверху