Anmerkungen zum Code:
In Python werden Klassen Gross geschrieben, also CoWorker.
Die ganzen Klassenattribute sind unsinnig und können weg. Eine Liste als Name ist auch etwas seltsam.
Eine Liste an Wochentagen sollte auch eine Liste sein, und kein String mit Komma getrennten Tagen. Später nimmst Du ja auch an, dass `preferences_weekdays` eine Liste ist.
Die Funktion `compare_preferences` vergleicht gar nichts. Funktionen sollten alles, was die brauchen, über ihre Argumente bekommen, also `ls_coworker`, `ls_five_days` und `week`.
Was soll eigentlich diese `ls_` bedeuten? Für Variablennamen keine kryptischen Abkürzungen benutzen. Falls das `Liste` heißen soll, keine Datentypen in den Namen schreiben, dass es sich um etwas handelt, wo mehrere Elemente drin stehen, erkennt man am Plural, also five_days, oder coworkers. Da `week` in der Funktion geändert wird, wäre es besser, dass Du es gar nicht übergibst, sondern ein neues Wörterbuch erzeugst, und dieses zurück gibst.
Die gleiche Information steckt in den Schlüsseln von week und in five_days. Das eine sollte aus dem anderen erzeugt werden. Statt in week Werte zu speichern, die komma-separierte Strings sind, sollten das wieder Listen sein.
Code: Alles auswählen
import datetime
import calendar
WORK_DAYS = ["Mo", "Di", "Mi", "Do", "Fr"]
class CoWorker:
def __init__(self, name, preferences_weekdays, preferences_specific_days, unavailable_weekdays, unavailable_specific_days, days, more_days):
# den einzelnen Mitarbeitern werden wesentliche Eigenschaften zugeordnet
self.name = name
self.preferences_weekdays = preferences_weekdays
self.preferences_specific_days = preferences_specific_days
self.unavailable_weekdays = unavailable_weekdays
self.unavailable_specific_days = unavailable_specific_days
self.days = days
self.more_days = more_days
def generate_weekday_preferences(coworkers):
weekday_preferences = {day:[] for day in WEEK_DAYS}
for person in coworkers:
for day in person.preferences_weekdays:
weekday_preferences[day].append(person)
return weekday_preferences
def main():
#die einzelnen Mitarbeiter werden definiert
coworkers = [
CoWorker("Tobias",["Mo"],None,None,None,7,True),
CoWorker("Robert",["Mo", "Di"],None,None,None,7,True),
]
weekday_preferences = generate_weekday_preferences(coworkers)
print(weekday_preferences)
month_days = calendar.monthcalendar(2019,10)
print(month_days)
if __name__ == '__main__':
main()