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