Определить, на какой день недели выпадает дата в pythone - Общение Python мододелов

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

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



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



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



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

*Если в указанном году День рождения выпадает на субботу или воскресенье, функция должна вернуть строку 'Ура, выходной в День рождения!', иначе — строку 'В День рождения придется поработать.'
 
Регистрация
15 Дек 2013
Сообщения
87
Репутация
0
Спасибо
0
Монет
0
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 'В День рождения придется поработать.'
 
Регистрация
30 Сен 2013
Сообщения
83
Репутация
0
Спасибо
0
Монет
0
только свои велосипеды! 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))
 

sid

Capitan

sid

Capitan
Регистрация
13 Ноя 2013
Сообщения
85
Репутация
1
Спасибо
0
Монет
0
Чисто одним модулем 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("Неправильная дата")
 
Регистрация
25 Июн 2013
Сообщения
80
Репутация
-3
Спасибо
0
Монет
0
имхо, такие проги уже есть...
проще всего оперировать юлианскими датами.
получается простая арифметика.
 
Сверху Снизу