Python :: Aufgabe #362
2 Lösungen
Ziffern Tag und Monat im Jahr
Anfänger - Python
von eisheiliger
- 07.07.2021 um 20:14 Uhr
Ermittle für die Jahre 2001 bis 2022 jedes Datum, in dem die Ziffern der Felder Tag und Monat mit dem Feld Jahr übereinstimmen.
Die Lösung für das Jahr 2001 lautet:
02.01. -> 2001
20.01. -> 2001
01.02. -> 2001
10.02. -> 2001
02.10. -> 2001
20.10. -> 2001
Die Lösung für das Jahr 2001 lautet:
02.01. -> 2001
20.01. -> 2001
01.02. -> 2001
10.02. -> 2001
02.10. -> 2001
20.10. -> 2001
Lösungen:
Python-Code
from datetime import date, timedelta def jahr_monat_entspricht_jahr(startjahr, endjahr): TRENNZEICHEN = "" TestJahre = list(range(startjahr, endjahr + 1)) for TestJahr in TestJahre: LaufDatum = date(TestJahr, 1, 1) EndDatum = date(TestJahr, 12, 31) SortJahr = list(str(TestJahr)) SortJahr.sort() SortJahrStr = TRENNZEICHEN.join(SortJahr) print('Lösungen für das Jahr ' + str(TestJahr) + ':') while LaufDatum <= EndDatum: SortVergleichsDatum = list(str(LaufDatum.strftime("%d%m"))) SortVergleichsDatum.sort() SortVergleichsdatumStr = TRENNZEICHEN.join(SortVergleichsDatum) if SortJahrStr == SortVergleichsdatumStr: print(LaufDatum.strftime("%d.%m") + " -> " + str(TestJahr)) LaufDatum = LaufDatum + timedelta(days=1) jahr_monat_entspricht_jahr(2001, 2022)
Python-Code
DATA_MONTH = {1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12:31} def check_date_with_year(check_range): year_min, year_max = check_range for year in range(year_min, year_max + 1): for month in DATA_MONTH.keys(): for day in range(1, DATA_MONTH[month] + 1): if day < 10: day_str = '0' + str(day) else: day_str = str(day) if month < 10: month_str = '0' + str(month) else: month_str = str(month) if convert_to_dict(str(year)) == convert_to_dict(day_str + month_str): print(f'{day_str}.{month_str} -> {year}') def convert_to_dict(value): return_dict = {} for character in str(value): if character in return_dict.keys(): return_dict[character] += 1 else: return_dict[character] = 1 return return_dict check_date_with_year((2001, 2022))