Programa Python para encontrar la fecha de nacimiento el mismo día que naciste

Escriba un programa para encontrar fechas de nacimiento hasta un año determinado en el mismo día en que nació. Deje que la entrada tenga el formato: AAAA-MM-DD

Ejemplos:

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

Entrada: 1992-11-2
Salida: [‘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’]

Recomendado: pruebe su enfoque en {IDE} primero, antes de pasar a la solución.

Funciones creadas:

  • split_date(fecha de nacimiento): Esta función divide la fecha dada por el usuario en año, mes y día.
  • get_birthday(fecha de nacimiento): esta función se utiliza para devolver el día de la semana en que nació el usuario.
  • true_birthdays(fecha de nacimiento): esta función se utiliza para devolver una lista de fechas que tienen el mismo día de la semana en que nació el usuario.

Para encontrar las fechas de nacimiento que tienen el mismo día en que nació el usuario, los tres métodos anteriores nos ayudarán. En primer lugar, el usuario ingresará la fecha y la split_date()función dividirá la fecha en año, mes y día. Luego, la función get_birthday()se usará para encontrar el día de la semana para esa fecha en particular. Finalmente, la true_birthdays()función se utilizará para encontrar la lista de todas las fechas que tienen el mismo día de la semana. Dentro de esta función, un bucle for estará iterando desde el año de nacimiento hasta un año específico y verificará si la fecha de nacimiento en un año en particular tiene el mismo día de la semana o no. Si el día de la semana es el mismo, esa fecha se agregará a la lista de fechas.

A continuación se muestra la implementación.

import datetime
import calendar
  
weekdays = ["Monday", "Tuesday", "Wednesday", 
           "Thursday", "Friday", "Saturday", "Sunday"]
     
  
# get_birth day
def split_date(birthday):
  
    # Split it to year, month and day
    year, month, day = birthday.split('-')    
    return year, month, day
      
  
def get_birthday(birthday):
  
    year, month, day = split_date(birthday)
  
    # Get a date object for the day of birth
    bdate = datetime.datetime(int(year), int(month), int(day))
  
    # Get the integer weekday for the day of birth
    weekday = bdate.weekday()
  
    # Tell the user
    day = weekdays[weekday]
  
    return day   
  
  
def listToString(x):
  
    # initialize an empty string 
    String = " " 
  
    # return string   
    return (String.join(x))
  
  
def true_birthdays(birthdate):
    year, month, day = split_date(birthdate)
  
    # get the year from birthday
    year = birthdate[:4].split('-')
  
    # convert list to string   
    year = listToString(year)
  
    # get the weekday you are born
    d_day = get_birthday(birthdate) 
  
    # list of true birthdate[birthday that have same 
    # weekday as the day you were born]    
    true_BD = [] 
      
    j = 0
  
    for i in range(int(year), 2050):
  
        # add + j to birth year 
        new_year = int(year)+j 
  
        # construct new birthday
        new_birthday = str(str(new_year)+"-"+month+"-"+day) 
  
        # get weekday of the new birthday
        new_d_day = get_birthday(new_birthday)
  
        # if birthday that have same weekday 
        # as the day you were born
        if d_day == new_d_day: 
  
        # add to the list of true birthdate
            true_BD.append(new_birthday)
        else:
            pass
        j += 1
  
    return true_BD
  
  
def main():
  
    # Get the birth date
    birthdate = "1996-11-12"
  
    # year_limit = input("search limit from your birthday- ")
    dates = true_birthdays(birthdate)  
      
    print(dates)
      
  
# Driver's code
main()

Producción:

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

Publicación traducida automáticamente

Artículo escrito por auwalamshi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *