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.
Schichtplan erstellen
@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.
-
- User
- Beiträge: 4
- Registriert: Dienstag 27. Juli 2010, 15:39
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.
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.
Zuletzt geändert von sven71dachs am Freitag 30. Juli 2010, 20:35, insgesamt 1-mal geändert.
@sven71dachs: Was soll sich alle 28 Tage wiederholen? 4× früh und 3× nacht sind ja nur 7 Tage!?
Mal so als Denkanstoss:
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()
-
- User
- Beiträge: 4
- Registriert: Dienstag 27. Juli 2010, 15:39
ok,dies ist der Schichtalgorythmus
s4
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
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
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.
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.
-
- User
- Beiträge: 4
- Registriert: Dienstag 27. Juli 2010, 15:39
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?
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?
Code: Alles auswählen
pattern[(date.toordinal() + offset) % len(pattern)])