Python-Programm, um das Geburtsdatum am selben Tag zu finden, an dem Sie geboren wurden
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)
+
j
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)
(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 ']