Kanoniczne liczby rzymskie
Zapisz liczbę całkowitą od 1 do 3999 jako kanoniczną liczbę rzymską wielkimi literami.
def roman_numeral(n):
if type(n) is not int or not 1 <= n <= 3999:
raise ValueError("roman.range")
values = [(1000,"M"),(900,"CM"),(500,"D"),(400,"CD"),
(100,"C"),(90,"XC"),(50,"L"),(40,"XL"),
(10,"X"),(9,"IX"),(5,"V"),(4,"IV"),(1,"I")]
parts = []
for value, symbol in values:
count, n = divmod(n, value)
parts.append(symbol * count)
return "".join(parts)| Projekt | Sprawdź postacie odejmujące, takie jak 4 i 900, odrzucając zero, liczby spoza zakresu i wartości niecałkowite. |
|---|---|
| Sprawdź przed zastosowaniem | Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami. |
| Modele | Dodaj endpoint zgodny z OpenAI lub Anthropic, podając bazowy URL i klucz API, jeśli jest wymagany. Sprawdź połączenie. Lokalny serwer modelu musi działać; zdalne narzędzia mogą przesyłać dane oddzielnie. |
def roman_numeral(n):
if type(n) is not int or not 1 <= n <= 3999:
raise ValueError("roman.range")
values = [(1000,"M"),(900,"CM"),(500,"D"),(400,"CD"),
(100,"C"),(90,"XC"),(50,"L"),(40,"XL"),
(10,"X"),(9,"IX"),(5,"V"),(4,"IV"),(1,"I")]
parts = []
for value, symbol in values:
count, n = divmod(n, value)
parts.append(symbol * count)
return "".join(parts)Nadaj formaterowi kontrakt, na którym mogą polegać jego wywołujący
NumeralHaven oferuje środowisko programistyczne dla Windows do omawiania szczegółów implementacji z podłączonym modelem AI. Formatowanie to dobry początek, bo niewielka funkcja może zawierać widoczne reguły produktu. Opisz akceptowane dane i dokładny wynik przed zleceniem zmian, uwzględniając kod prezentujący wynik użytkownikowi.
Dostarczonym przykładem projektu jest formater liczb rzymskich. Możesz poprosić asystenta o przegląd obsługiwanego zakresu liczbowego i form odejmujących, a następnie o wyjaśnienie, jak kod wywołujący powinien obsługiwać odrzucone wartości. Chodzi o rozwijanie własnego kodu z jasnymi oczekiwaniami, a nie zakładanie, że środowisko oferuje gotową usługę konwersji liczb.
Gdy kontrakt jest jasny, sprawdź, czy sugerowana zmiana modyfikuje zapis wyniku, akceptowane typy lub zachowanie przy błędzie. Narzędziami projektu uruchom dane testowe wokół granic zakresu i reprezentatywnych form odejmujących. Sprawdź też otaczającą ścieżkę wyświetlania, aby nieprawidłowa wartość nie stawała się niewyjaśnionym pustym miejscem lub mylącą etykietą w interfejsie.
Do pracy wspomaganej modelem podłącz punkt końcowy zgodny z OpenAI lub Anthropic i podaj dane uwierzytelniające, gdy są wymagane. Model AI bez filtrów jest opcją, jeśli usługa go oferuje. Pojemność kontekstu, dostępność narzędzi i ograniczenia odpowiedzi zależą od wybranego serwera i modelu; przegląd pozostaje częścią procesu rozwoju.
Przed zmianą formatera wartości
Dlaczego uwzględnić w prośbie kod wywołujący formater?
Kod wywołujący decyduje, jak odrzucona wartość lub sformatowany ciąg trafi do interfejsu. Uwzględnij tę ścieżkę, aby asystent mógł wyjaśnić skutki zmiany wartości zwracanej lub wyjątku, a nie tylko wewnętrzną konwersję.
Jakie przykłady precyzują wymagania formatowania?
Podaj akceptowane wartości z dokładnymi oczekiwanymi ciągami oraz wartości wymagające odrzucenia. Dla liczb rzymskich uwzględnij granice zakresu i formy odejmujące. Te dane testowe ujawniają konwencje zapisu przed zaproponowaniem implementacji.
Czy formater powinien po cichu akceptować tekst liczbowy?
Tylko gdy kontrakt aplikacji wymaga takiej konwersji. Jawnie określ akceptowane typy i ustal miejsce parsowania. Wygodne przekształcenie wewnątrz formatowania może ukryć błąd wywołującego lub zmienić sposób prezentowania nieprawidłowych wartości użytkownikowi.
Czy inny model może zmienić wymagany wynik formatera?
Zmiana podłączonego modelu nie powinna zmieniać określonych wymagań. Porównując propozycje, zachowaj te same dane testowe i reguły akceptacji. Oceniaj każdą zmianę według tych reguł, zamiast uznawać preferowaną przez model konwencję za wiążącą.
NumeralHaven · Zaktualizowano 2026-10-25