Python

Задача на питоне #2

Дата некоторого дня определяется тремя натуральными числами: g (год), m (порядковый номер месяца) и n (число). По заданным g, n и m определить: а) дату предыдущего дня; б) дату следующего дня.
barankin31
barankin31
89
 # импортируем модуль datetime 
import datetime

# задаем год, месяц и число
g = 2023 # год
m = 3 # месяц
n = 7 # число

# создаем объект date из года, месяца и числа
d = datetime.date(g, m, n)

# создаем объект timedelta для одного дня
one_day = datetime.timedelta(days=1)

# вычисляем дату предыдущего дня
prev_day = d - one_day

# вычисляем дату следующего дня
next_day = d + one_day

# выводим результаты на экран
print(f"Дата: {d}")
print(f"Дата предыдущего дня: {prev_day}")
print(f"Дата следующего дня: {next_day}")
АР
Алексей Решетников
194
Лучший ответ
g = int(input("Введите год: "))
m = int(input("Введите порядковый номер месяца: "))
n = int(input("Введите число: "))

# Определение количества дней в месяце
if m == 2:
if g % 4 == 0 and (g % 100 != 0 or g % 400 == 0):
days_in_month = 29 # Високосный год
else:
days_in_month = 28
elif m in [4, 6, 9, 11]:
days_in_month = 30
else:
days_in_month = 31

# Поиск предыдущего дня
if n == 1:
if m == 1:
previous_day = days_in_month
previous_month = 12
previous_year = g - 1
else:
previous_day = 31
previous_month = m - 1
previous_year = g
else:
previous_day = n - 1
previous_month = m
previous_year = g

# Поиск следующего дня
if n == days_in_month:
if m == 12:
next_day = 1
next_month = 1
next_year = g + 1
else:
next_day = 1
next_month = m + 1
next_year = g
else:
next_day = n + 1
next_month = m
next_year = g

# Вывод предыдущего и следующего дней
print("Предыдущий день: {}.{}.{}".format(previous_day, previous_month, previous_year))
print("Следующий день: {}.{}.{}".format(next_day, next_month, next_year))