Grafik zmian
Stacja działa całą dobę: zmiana poranna, popołudniowa i nocna, każdego dnia tygodnia. Ręczne układanie grafiku zajmuje dowódczyni godzinę w każdą niedzielę, a dwa razy w tym miesiącu ktoś wylądował na nocnej zmianie zaraz po popołudniowej.
Niech grafik ułoży program i niech sam sprawdzi swoją pracę.
Ukończ etap 1, aby odblokować ten etap.
Zbuduj rota, listę krotek (day, shift, name) dla każdej zmiany tygodnia, po kolei, biorąc załogę po kolei. Wypisz jedną linię na dzień, a potem policz, ile razy ktoś pracuje dwie zmiany pod rząd:
pon rano: Kowalska popołudnie: Tanaka noc: Okafor wt rano: Bondarenko popołudnie: Kowalska noc: Tanaka śr rano: Okafor popołudnie: Bondarenko noc: Kowalska czw rano: Tanaka popołudnie: Okafor noc: Bondarenko pt rano: Kowalska popołudnie: Tanaka noc: Okafor sob rano: Bondarenko popołudnie: Kowalska noc: Tanaka niedz rano: Okafor popołudnie: Bondarenko noc: Kowalska Zmiany pod rząd: 0
Licz zmiany w slot na bieżąco: crew[slot % len(crew)] wraca do pierwszej osoby po ostatniej. {name:<10} wyrównuje nazwiska w kolumny.
Ukończ etap 1, aby odblokować ten etap.
Teraz część załogi ma dni wolne. Branie po kolei już nie działa, więc użyj reguły dla każdej zmiany: spośród osób, które nie mają tego dnia wolnego i nie pracowały na poprzedniej zmianie, wybierz tę z najmniejszą liczbą zmian do tej pory, a przy remisie pierwszą w crew. Wypisz grafik, sprawdzenie zmian pod rząd i liczbę zmian każdej osoby:
pon rano: Kowalska popołudnie: Tanaka noc: Okafor wt rano: Bondarenko popołudnie: Kowalska noc: Tanaka śr rano: Okafor popołudnie: Bondarenko noc: Kowalska czw rano: Tanaka popołudnie: Okafor noc: Bondarenko pt rano: Kowalska popołudnie: Tanaka noc: Okafor sob rano: Bondarenko popołudnie: Kowalska noc: Tanaka niedz rano: Bondarenko popołudnie: Kowalska noc: Tanaka Zmiany pod rząd: 0 Zmiany na osobę: Kowalska: 6 Tanaka: 6 Okafor: 4 Bondarenko: 5
Trzymaj liczby w słowniku shifts_done, a ostatnią osobę na służbie w previous.
Podpowiedzi
Pętla for z enumerate i range
# enumerate() - indeks + element
missions = ["Apollo 11", "Apollo 12", "Apollo 13"]
for number, mission in enumerate(missions, start=1):
print(f"{number}. {mission}")
# range() - generowanie sekwencji liczb
print("\nKwadraty liczb:")
for n in range(1, 6):
print(f"{n}^2 = {n**2}")
# range z krokiem
print("\nLata misji (co 5 lat):")
for year in range(2020, 2041, 5):
print(year)
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].