Seite 1 von 1
Schichtplan erstellen
Verfasst: Mittwoch 28. Juli 2010, 00:07
von sven71dachs
Hallo zusammen,
ich möchte meinen Schichtplan mit dem Jahr verbinden,
sodass mit der Eingabe eines Datums die Schicht oder frei erscheint.
Der Schichtrythmus wiederholt sich ja immer.
Mir geht es nur um den Ansatz wie man Datum und Schichtrythmus verbindet.
Re: Schichtplan erstellen
Verfasst: Mittwoch 28. Juli 2010, 00:22
von BlackJack
@sven71dachs: So allgemein kann man wohl nur sagen, dass Du Dir das `datetime`-Modul mal anschauen solltest. Ansonsten müsstest Du IMHO etwas mehr über die Eigenschaften des Rythmus' verraten.
Re: Schichtplan erstellen
Verfasst: Freitag 30. Juli 2010, 20:15
von sven71dachs
sory das ich mich erst jetzt melde,
also, die Eigenschaft ist die, dass sich alle 28 Tage die Schicht wiederholt.
z.B. 4xfrüh, 3xnacht.........., und wieder 4xfrüh, 3xmalnacht
Meine Ansatz wäre dies in eine Liste zu schreiben und dann mit
der Zeit zu verbinden.
Ziel ist es für mich, als erster Schritt, ein Datum einzugeben und dann die Schicht zu erhalten.
Re: Schichtplan erstellen
Verfasst: Freitag 30. Juli 2010, 20:33
von BlackJack
@sven71dachs: Was soll sich alle 28 Tage wiederholen? 4× früh und 3× nacht sind ja nur 7 Tage!?
Mal so als Denkanstoss:
Code: Alles auswählen
from datetime import date as Date, timedelta as TimeDelta
from itertools import islice
def date_iter(start):
one_day = TimeDelta(days=1)
date = start
while True:
yield date
date += one_day
def main():
pattern = ['frueh'] * 4 + ['nacht'] * 3
offset = 3
for date in islice(date_iter(Date.today()), 20):
print date, pattern[(date.toordinal() + offset) % len(pattern)]
if __name__ == '__main__':
main()
Re: Schichtplan erstellen
Verfasst: Freitag 30. Juli 2010, 20:44
von sven71dachs
ok,dies ist der Schichtalgorythmus
s4
Code: Alles auswählen
s4 = ["F", "F", "F", "F", "N", "N", "N", # 4x Früh + 3x Nacht
"f", "f", "S", "S", "S", "f", "f", # 2x frei + 3x Spät + 2x frei
"N", "N", "f", "f", "F", "F", "F", # 2x Nacht + 2x frei + 3x Füh
"S", "S", "N", "N", "f", "f"] # 2x Spät + 2x Nacht + 2x frei
Re: Schichtplan erstellen
Verfasst: Samstag 31. Juli 2010, 00:47
von Dauerbaustelle
Ansatz: Von gegebenem Datum aus den relativen Abstand zum Tag des Rhythmusbeginns herausfinden (nennen wir den Abstand mal "a"). Das a-te Element der Liste ausgeben. :)
Für die Berechnung des Abstandes: Wird ziemlich einfach, wenn der Rhythmus z.B. immer am 1ten jeden Monats beginnt, ansonsten mal das datetime-Modul und insbesondere timedelta daraus angucken.
Re: Schichtplan erstellen
Verfasst: Donnerstag 5. August 2010, 15:33
von sven71dachs
Hallo zusammen,
also der Denkanstoß hat etwas länger gedauert.
Der Generator für das Datum ist schön einfach.
Aber bei der mainFunktion happert es etwas.
Wie bist du auf die Modulo Operation mit dem Offset gekommen?