Рубрики

Программа Python, чтобы найти дату рождения в тот же день, когда вы родились

Напишите программу, чтобы найти даты рождения до определенного года в тот же день, когда вы родились. Пусть вход будет в формате: ГГГГ-ММ-ДД

Примеры:

Input: 1996-11-12
Output: [‘1996-11-12’, ‘2002-11-12’, ‘2013-11-12’, ‘2019-11-12’, ‘2024-11-12’, ‘2030-11-12’, ‘2041-11-12’, ‘2047-11-12’]

Input: 1992-11-2
Output: [‘1992-11-2’, ‘1998-11-2’, ‘2009-11-2’, ‘2015-11-2’, ‘2020-11-2’, ‘2026-11-2’, ‘2037-11-2’, ‘2043-11-2’, ‘2048-11-2’]

Рекомендуется: пожалуйста, попробуйте ваш подход на во-первых, прежде чем перейти к решению.

Созданные функции:

  • split_date (birthdate): эта функция разбивает дату, указанную пользователем, на год, месяц и день.
  • get_birthday (birthdate): эта функция используется для возврата дня недели, когда родился пользователь.
  • true_birthdays (дата рождения): эта функция используется для возврата списка дат, имеющих тот же день недели, когда родился пользователь.

Чтобы найти даты рождения, имеющие один и тот же день, когда пользователь родился выше, нам помогут три метода. Во-первых, пользователь split_date() дату, а split_date() разделит дату на год, месяц и день. Затем функция get_birthday() будет использоваться для поиска дня недели для этой конкретной даты. Наконец, true_birthdays() будет использоваться для поиска списка всех дат, имеющих один и тот же день недели. Внутри этой функции цикл for будет повторяться от года рождения к определенному году и будет проверять, есть ли дата рождения в каком-либо конкретном году с тем же днем недели или нет. Если день недели совпадает, то эта дата будет добавлена в список дат.

Ниже приведена реализация.

import datetime

import calendar

  

weekdays = ["Monday", "Tuesday", "Wednesday"

           "Thursday", "Friday", "Saturday", "Sunday"]

     

  
# get_birth day

def split_date(birthday):

  

    # Разделить его на год, месяц и день

    year, month, day = birthday.split('-')    

    return year, month, day

      

  

def get_birthday(birthday):

  

    year, month, day = split_date(birthday)

  

    # Получить дату объекта на день рождения

    bdate = datetime.datetime(int(year), int(month), int(day))

  

    # Получить целое число дня недели для дня рождения

    weekday = bdate.weekday()

  

    # Скажите пользователю

    day = weekdays[weekday]

  

    return day   

  

  

def listToString(x):

  

    # инициализировать пустую строку

    String = " " 

  

    # возвращаемая строка

    return (String.join(x))

  

  

def true_birthdays(birthdate):

    year, month, day = split_date(birthdate)

  

    # получить год от дня рождения

    year = birthdate[:4].split('-')

  

    # преобразовать список в строку

    year = listToString(year)

  

    # получить будний день рождения

    d_day = get_birthday(birthdate) 

  

    # список истинной даты рождения [день рождения с одинаковым

    # будний день как день вашего рождения]

    true_BD = [] 

      

    j = 0

  

    for i in range(int(year), 2050):

  

        # добавить + j к году рождения

        new_year = int(year)+

  

        # построить новый день рождения

        new_birthday = str(str(new_year)+"-"+month+"-"+day) 

  

        # получить будний день нового дня рождения

        new_d_day = get_birthday(new_birthday)

  

        # если у дня рождения день недели

        # как день, когда вы родились

        if d_day == new_d_day: 

  

        # добавить в список истинную дату рождения

            true_BD.append(new_birthday)

        else:

            pass

        j += 1

  

    return true_BD

  

  

def main():

  

    # Получить дату рождения

    birthdate = "1996-11-12"

  

    # year_limit = input ("предел поиска с вашего дня рождения-")

    dates = true_birthdays(birthdate)  

      

    print(dates)

      

  
# Код водителя
main()

Выход:

[‘1996-11-12’, ‘2002-11-12’, ‘2013-11-12’, ‘2019-11-12’, ‘2024-11-12’, ‘2030-11-12’, ‘2041-11-12’, ‘2047-11-12’]

Рекомендуемые посты:

Программа Python, чтобы найти дату рождения в тот же день, когда вы родились

0.00 (0%) 0 votes