Ich habe mir ein Programm geschrieben, dass mir Kurslisten mit Wochentag und Datum für einen Zeitraum ausgibt. Ich benötige das fürs Kursprotokoll.
''' Kursliste.py
Tool: Kursliste
Version: 0.1.0
Autor: pixewakb
Lizenz: Nicht spezifiziert
Beschreibung: Kleines Skript, das in einem gegebenen
Zeitraum alle Wochentage ausgibt, an denen eine
Seminarveranstaltung stattfinden könnte. Ferientage
usw. werden nicht berücksichtigt.
'''
import calendar
# BENUTZEREINGABEN - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
startDatum = [2012,5,28]
endDatum = [2012,7,13]
wochentage = ["Dienstag"]
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
wochentag = {0:"Montag",
1:"Dienstag",
2:"Mittwoch",
3:"Donnerstag",
4:"Freitag",
5:"Samstag",
6:"Sonntag"}
month = {1:"Januar",
2:"Februar",
3:"März",
4:"April",
5:"Mai",
6:"Juni",
7:"Juli",
8:"August",
9:"September",
10:"Oktober",
11:"Dezember",
12:"Dezember"}
jahr = startDatum[0]
monat = startDatum[1]
while True:
aktuellerMonat = calendar.monthcalendar(jahr,monat)
for weak in aktuellerMonat:
for wochentagnr, tag in enumerate(weak):
if jahr == startDatum[0] and monat == startDatum[1] and tag < startDatum[2]:
# Termin ist frueher als das Startdatum, also ausserhalb des Zeitraums
pass
elif jahr == endDatum[0] and monat == endDatum[1] and tag > endDatum[2]:
# Termin ist spaeter als das Enddatum, also ausserhalb des Zeitraums
pass
else:
# Wenn der Termin im Zeitraum liegt, dann pruefe
if wochentag[wochentagnr] in wochentage and tag != 0:
print(wochentag[wochentagnr][:2] + '., ' + str(tag).zfill(2) + '.' + str(monat).zfill(2) + '.')
if monat == 12:
jahr += 1
monat = 1
else:
monat += 1
if jahr == endDatum[0] and monat > endDatum[1]:
break
Wahrscheinlich kann man die while-Schleife und die if-Bedingungen (
code smell) weiter optimieren, ich habe aber gerade nicht die Zeit und Muße das sauber zu programmieren.