Python :: Aufgabe #21 :: Lösung #4

4 Lösungen Lösungen öffentlich
#21

Anzahl Freitag, der 13te über bestimmten Zeitraum

Anfänger - Python von pocki - 29.12.2012 um 19:56 Uhr
Schreibe ein Programm welches 2 verschiedene Datum einliest und berechne die Anzahl wie oft in diesem Zeitraum der 13te eines Monats auf einen Freitag fiel und gib diese aus.

Konsolenausgabe:


Startdatum: 01.01.2009
Enddatum: 31.12.2009
13.02.2009
13.03.2009
13.11.2009
Summe: 3
#4
vote_ok
von PythonLui (400 Punkte) - 19.04.2021 um 09:29 Uhr
Quellcode ausblenden Python-Code
import datetime

# Eingabe 
start = input("Startdatum: ")
ende = input("Enddatum: ")

# Liste erstellen 
start_liste = start.rsplit(".")
ende_liste = ende.rsplit(".")

# Liste in in Integer Liste wandeln
for i in range(len(start_liste)):
    start_liste[i] = int(start_liste[i])
for i in range(len(ende_liste)):
    ende_liste[i] = int(ende_liste[i])

# Überprüfen ob Ende vor oder nach dem 13. liegt
start_liste[0] = 13
if ende_liste[0] >= 13:
    ende_liste[0] = 13
    ende_liste[1] += 1


summe = 0

while True:
    year_difference = ende_liste[2] - start_liste[2]
    check_month = start_liste
    # Wenn Jahreswechsel vorhanden ist
    if year_difference > 0:
        # Durchläuft ein ganzes Jahr
        for month in range(start_liste[1], 12 + 1):
            check_month[1] = month
            aktuelles_pruef_datum = datetime.date(check_month[2], check_month[1], check_month[0])
            umwandlung = datetime.date.timetuple(aktuelles_pruef_datum)
            # Überprüfen ob der 13 ein Freitag ist
            if umwandlung.tm_wday == 4:
                print(f"{check_month[0]}.{check_month[1]}.{check_month[2]}")
                summe += 1
        start_liste[1] = 1
        start_liste[2] += 1
    # Wenn kein Jahreswechsle vorhanden ist
    else:
        for month in range(start_liste[1], ende_liste[1]):

            check_month[1] = month
            aktuelles_pruef_datum = datetime.date(check_month[2], check_month[1], check_month[0])
            umwandlung = datetime.date.timetuple(aktuelles_pruef_datum)
            if umwandlung.tm_wday == 4:
                print(f"{check_month[0]}.{check_month[1]}.{check_month[2]}")
                summe += 1
        break
print(f"Summe: {summe}")

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben