Seite 1 von 1

Formation ändern

Verfasst: Donnerstag 23. November 2023, 12:47
von MAFearless
Hallo Zusammen,

weiß jemand wie ich dieses Problem lösen kann?

for n in Monat:
print("","","","","-",n,"findet am",Wochentag[n],"den",Tag[n],".","",Monat[n],"2022 statt.","Der Feiertag gilt",
Gültigkeit[n]+".","\n")

Ausgabe:
- Heilige drei Koenige findet am Sonntag den 6 . Januar 2022 statt. Der Feiertag gilt regional.

-> Problem: Nach der Zahl 6 ist ein Leerzeichen. Das möchte ich weg haben.

Ich habe probiert:

for n in Monat:
print("","","","","-",n,"findet am",Wochentag[n],"den",Tag[n]+".","",Monat[n],"2022 statt.","Der Feiertag gilt",
Gültigkeit[n]+".","\n")

-> Fehlermeldung

Danke vorab!

Re: Formation ändern

Verfasst: Donnerstag 23. November 2023, 15:09
von Sirius3
`n` ist ein schlechter Name für einen Monat, die Frage ist aber, warum hat ein Monat einen Wochentag oder einen Tag?
Ich vermute mal, dass es sich bei Monat, Wochentag, Tag und Gültigkeit eigentlich um Wörterbücher handelt, wo es eigentlich ein einziges Wörterbuch sein sollte.

Für die Asugabe benutzt man Formatstrings:

Code: Alles auswählen

FEIERTAGE = {
    "Heilige drei Könige": {
        "Wochentag": "Sonntag",
        "Tag": "6",
        "Monat": "Januar",
        "Gültigkeit": "regional",
    }
}


for feiertag, details in FEIERTAGE.items():
    print(f"{feiertag} findet am {details['Wochentag']} den {details['Tag']}. {details['Monat']} 2022 statt. Der Feiertag gilt {details['Gültigkeit']}")
Auch diese Datenstruktur ist noch nicht ideal, weil der Wochentag einfach aus dem Datum berechenbar ist und das Datum auf mehrere Schlüssel verteilt ist.

Code: Alles auswählen

import locale
from datetime import date as Date

FEIERTAGE = [
    {
        "Name": "Heilige drei Könige",
        "Datum": Date(2022, 1, 6),
        "Gültigkeit": "regional",
    }
]

locale.setlocale(locale.LC_ALL, "")

for details in FEIERTAGE:
    print(f"{details['Name']} findet am {details['Datum']:%A den %d. %B %Y} statt. Der Feiertag gilt {details['Gültigkeit']}")