Space Python Ładowanie Pythona…

Grafik zmian

Napisz kodTrudny 2 etapy

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ę.

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.

Tydzień
Poprawny grafik

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.

Sprawiedliwy tydzień
Każda reguła zachowana
Nie jesteś zalogowany, więc postęp zostaje tylko w tej przeglądarce. Zaloguj się, aby go zapisać i korzystać z podpowiedzi oraz rozwiązań.

Podpowiedzi

Pętla for z enumerate i range

enumerate() dodaje numerację do elementów. range() generuje sekwencję liczb. Można określić start, stop i krok.
petla-for-enumerate-range.py
# 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)
Otwórz cały przykład
script.py
PythonWiersz 1, kol. 1Spacje: 4
Ładowanie środowiska Pythona…

Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].