Space Python Ładowanie Pythona…

Parser poleceń

Napisz kodŚredni 2 etapy

Operatorzy wpisują polecenia w konsoli w pośpiechu, z przypadkowymi spacjami, wielkimi literami i od czasu do czasu z omsknięciem palca. Oprogramowanie lotu nigdy nie może wykonać polecenia, którego w pełni nie zrozumiało, a operator musi od razu wiedzieć, dlaczego polecenie zostało odrzucone.

Napisz parser, który stoi między klawiaturą a statkiem.

Napisz parse_command(text). Ignoruje wielkość liter i spacje wokół słów, zwraca ("burn", seconds) dla odpalenia z jedną liczbą dodatnią i zgłasza ValueError z powodem dla wszystkiego innego. Potem spróbuj każdego polecenia i wypisz OK i wynik albo ODRZUCONE, polecenie w cudzysłowie i powód:

OK ('burn', 12.5)
OK ('burn', 3.0)
OK ('burn', 0.5)
ODRZUCONE "burn": burn potrzebuje jednej wartości: długości w sekundach
ODRZUCONE "burn ten": długość odpalenia musi być liczbą: ten
ODRZUCONE "burn -4": długość odpalenia musi być dodatnia: -4
ODRZUCONE "dance": nieznane polecenie: dance
ODRZUCONE "": puste polecenie

text.strip().lower().split() daje słowa. Zamiana długości może zgłosić własny ValueError: złap go i zgłoś swój, z jaśniejszym komunikatem.

Przyjmij albo odrzuć
parse_command() dla dowolnego tekstu

Ukończ etap 1, aby odblokować ten etap.

Dwa nowe polecenia: set mode X, gdzie X to jeden z MODES, zwraca ("set", "mode", X), a abort, bez wartości, zwraca ("abort",). Wszystko inne po set jest odrzucane z własnym powodem:

OK ('burn', 12.5)
OK ('set', 'mode', 'safe')
OK ('set', 'mode', 'science')
ODRZUCONE "set mode party": tryb musi być jednym z: nominal, safe, science
ODRZUCONE "set gain 2": nieznane ustawienie: gain
ODRZUCONE "set mode": set potrzebuje ustawienia i wartości
OK ('abort',)
ODRZUCONE "abort now": abort nie przyjmuje wartości
ODRZUCONE "burn ten": długość odpalenia musi być liczbą: ten
ODRZUCONE "dance": nieznane polecenie: dance

Dodaj oba przed ostatnią linią z nieznane polecenie, żeby nadal łapała wszystko inne.

Trzy polecenia
Każda reguła
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

Metody find, replace i split

Metoda find() szuka pozycji tekstu. replace() zamienia fragmenty. split() dzieli string na listę według separatora.
metody-find-replace-split.py
# Wyszukiwanie i zamiana w stringach

report = "Misja Mars zakończona sukcesem. Mars jest bezpieczny."

# Znajdowanie pozycji
position = report.find("Mars")
print("Mars znaleziony na pozycji:", position)

# Zliczanie wystąpień
mars_count = report.count("Mars")
print("Ile razy Mars:", mars_count)

# Zamiana tekstu
new_report = report.replace("Mars", "Wenus")
print(new_report)

# Dzielenie na części
data = "Jan,Kowalski,Pilot,ISS"
elements = data.split(",")
print("Elementy:", elements)
print("Imię:", elements[0])
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:].