Cofanie i historia
Konsola ładunku działa: operatorzy dodają i usuwają skrzynie i sprawdzają ładownię. Nie potrafi jednak odpowiedzieć na pytanie „co się stało?” ani cofnąć omsknięcia palca, a w zeszłym tygodniu skrzynia została usunięta przez pomyłkę i trzeba ją było wpisać z powrotem z pamięci.
Rozszerz konsolę o historię zmian, a potem o cofanie, które z niej korzysta.
Ukończ etap 1, aby odblokować ten etap.
Konsola działa tak, jak jest. Dodaj listę history i zapisuj każdą zmianę, która naprawdę nastąpiła, jako (action, item, mass): ("add", "CG-0042", 18.5) albo ("remove", "CG-0042", 18.5). Odrzucone polecenia niczego nie zmieniają, więc nie są zapisywane. Dodaj polecenie history, które je wypisuje, z numerami:
Dodano CG-0042 Dodano CG-0043 Usunięto CG-0042 Nie ma w ładowni: CG-0099 Dodano CG-0044 1. add CG-0042 18.5 2. add CG-0043 2.36 3. remove CG-0042 18.5 4. add CG-0044 31.0 Ładownia: CG-0043, CG-0044 (33.36 kg)
Przy usuwaniu potrzebujesz masy skrzyni, która znika: hold.pop(item) usuwa ją i zwraca jej masę.
Ukończ etap 1, aby odblokować ten etap.
Dodaj undo: zdejmij ostatnią zmianę z history przez pop() i zrób odwrotność, usuwając dodaną skrzynię albo przywracając usuniętą z jej masą. Gdy nie ma już czego cofnąć, powiedz to:
Dodano CG-0042 Dodano CG-0043 Usunięto CG-0042 Cofnięto remove CG-0042 Dodano CG-0044 Ładownia: CG-0042, CG-0043, CG-0044 (51.86 kg) Cofnięto add CG-0044 Cofnięto add CG-0043 Cofnięto add CG-0042 Nie ma czego cofnąć Ładownia: pusta (0.00 kg)
Nowa lista poleceń cofa wszystko, a potem jeszcze trochę.
Podpowiedzi
Metody list - append, insert, pop
# Metody modyfikujące listę
missions = ["Apollo 11", "Apollo 12"]
# append - dodaje na końcu
missions.append("Apollo 13")
print("Po append:", missions)
# insert - wstawia w określone miejsce
missions.insert(0, "Apollo 10")
print("Po insert:", missions)
# pop - usuwa i zwraca element
last = missions.pop()
print("Usunięta:", last)
print("Pozostałe:", missions)
# pop z indeksem
first = missions.pop(0)
print("Usunięta pierwsza:", first)
# clear - czyści całą listę
copy = ["a", "b", "c"]
copy.clear()
print("Po clear:", copy)
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].