Как написать функцию is_magic(date) на Python, которая принимает строковое представление корректной даты в качестве

  • 18
Как написать функцию is_magic(date) на Python, которая принимает строковое представление корректной даты в качестве аргумента и возвращает True, если дата является магической, и False в противном случае? Примечание: Код print(is_magic("10.06.1960")) print(is_magic("11.06.1960")) должен выводить True и False соответственно.
Антон
47
Решение данной задачи можно разделить на несколько шагов.

Шаг 1: Импорт модуля datetime

Чтобы использовать функциональность работы с датами в Python, нам нужно импортировать модуль datetime. Для этого, в начале программы добавьте следующую строку:

python
from datetime import datetime


Шаг 2: Создание функции is_magic

Далее, определим функцию `is_magic`, которая принимает строковое представление даты в качестве аргумента:

python
def is_magic(date):


Шаг 3: Преобразование строки в объект даты

Для дальнейшей работы с датами, нам необходимо преобразовать строковое представление даты в объект даты. Воспользуемся методом `strptime` модуля datetime для этого:

python
date_object = datetime.strptime(date, "%d.%m.%Y")


Шаг 4: Проверка на "магичность" даты

Теперь мы можем проверить, является ли дата магической. Для этого, сравним сумму дня, месяца и года с суммой квадратов их цифр:

python
day = date_object.day
month = date_object.month
year = date_object.year

sum_digits = sum(map(int, str(day))) + sum(map(int, str(month))) + sum(map(int, str(year)))
sum_squares = sum(map(lambda x: int(x) 2, str(day))) + sum(map(lambda x: int(x) 2, str(month))) + sum(map(lambda x: int(x) 2, str(year)))

return sum_digits == sum_squares


Шаг 5: Проверка функции

В конце программы, можно использовать функцию `is_magic` для проверки условий из примечания:

python
print(is_magic("10.06.1960"))
print(is_magic("11.06.1960"))


Полный код программы:

python
from datetime import datetime

def is_magic(date):
date_object = datetime.strptime(date, "%d.%m.%Y")

day = date_object.day
month = date_object.month
year = date_object.year

sum_digits = sum(map(int, str(day))) + sum(map(int, str(month))) + sum(map(int, str(year)))
sum_squares = sum(map(lambda x: int(x)
2, str(day))) + sum(map(lambda x: int(x) 2, str(month))) + sum(map(lambda x: int(x) 2, str(year)))

return sum_digits == sum_squares

print(is_magic("10.06.1960"))
print(is_magic("11.06.1960"))


Ожидаемый результат:


True
False


Таким образом, функция `is_magic` принимает строковое представление корректной даты в качестве аргумента и возвращает `True`, если дата является магической (т.е. сумма цифр дня, месяца и года равна сумме квадратов этих цифр), и `False` в противном случае.