Schreiben Sie ein Programm, um Geburtsdaten bis zu einem bestimmten Jahr am selben Tag zu finden, an dem Sie geboren wurden. Die Eingabe habe das Format: JJJJ-MM-TT

Beispiele:

Eingabe: 1996-11-12
Ausgabe: ['1996-11-12', '2002-11-12', '2013-11-12', '2019-11-12', '2024-11-12', '2030-11-12', '2041-11-12', '2047-11-12']

Eingabe: 1992-11-2
Ausgabe: ['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']

Empfohlen: Bitte versuchen Sie zuerst Ihren Ansatz in {IDE} , bevor Sie mit der Lösung fortfahren.

Erstellte Funktionen:



  • split_date (Geburtsdatum): Diese Funktion teilt das vom Benutzer angegebene Datum in Jahr, Monat und Tag auf.
  • get_birthday (Geburtsdatum): Mit dieser Funktion wird der Wochentag zurückgegeben, an dem der Benutzer geboren wurde.
  • true_birthdays (Geburtsdatum): Mit dieser Funktion wird eine Liste von Daten zurückgegeben, die denselben Wochentag haben, an dem der Benutzer geboren wurde.

Es hilft uns, die Geburtsdaten zu finden, die am selben Tag liegen, an dem der Benutzer über drei Methoden geboren wurde. Zunächst gibt der Benutzer das Datum ein und die split_date()Funktion teilt das Datum in Jahr, Monat und Tag auf. Dann wird die Funktion get_birthday()verwendet, um den Wochentag für dieses bestimmte Datum zu finden. Schließlich wird die true_birthdays()Funktion verwendet, um die Liste aller Daten mit demselben Wochentag zu finden. Innerhalb dieser Funktion iteriert eine for-Schleife vom Geburtsjahr zu einem bestimmten Jahr und prüft, ob das Geburtsdatum in einem bestimmten Jahr denselben Wochentag hat oder nicht. Wenn der Wochentag derselbe ist, wird dieses Datum zur Liste der Daten hinzugefügt.

Unten ist die Implementierung.

import datetime 
import calendar 
  
weekdays = ["Monday", "Tuesday", "Wednesday"
           "Thursday", "Friday", "Saturday", "Sunday"] 
     
  
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): 
  
        
        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"
  
    
    dates = true_birthdays(birthdate)   
      
    print(dates) 
      
  
main() 

Ausgabe:

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