Open mkowals9 opened 3 years ago
Nie wiem, czy dobrze rozumiem Twoje pytanie, ale spróbuję odpowiedzieć. Liczba 0.1 oczywiście palindromem nie jest (tak jak każdy ułamek). Podobnie każda liczba ujemna palindromem nie będzie. W związku z tym dla obu tych przypadków nasza funkcja powinna zwrócić błąd typu ValueError. Z pewnością jest kilka sposobów na rozwiązanie tego. Ja np. wykorzystałem instrukcję if aby na początku funkcji sprawdzić czy któryś z tych warunków jest spełniony. Jeżeli tak, to zwracam odpowiedni błąd z pomocą instrukcji raise. Jeśli nie, to sprawdzam czy ta liczba jest palindromem. Wszystkie testy przechodzą :)
Problem raczej mam w tym co powinno się dziać w przypadku łapania wyjątku - oczywiście, jeśli liczba nie jest palindromem to w obsłudze wyjątku ValueError funkcja powinna zwrócić False, czyż nie? Z tego powodu testy mi nie przechodzą :( A przynajmniej tak mi się wydaje
Moja funkcja tylko wywołuje błąd ValueError, jeżeli warunek w instrukcji if jest spełniony i nie obsługuje go. Testy przechodzą.
U mnie podobnie do @JWilczynski97. Wystarczyło na początku is_palindrome zrobić prostego ifa, który sprawdza czy argument jest intem. Jeżeli nie, wywala ValueError.
a jak zwracacie infinite_sequence generator?
wywala mi się test assert inspect.isgeneratorfunction(infinite_sequence)
znalazłem w netach takie coś: def isgeneratorfunction(obj): """Return true if the object is a user-defined generator function. Generator function objects provide the same attributes as functions. See help(isfunction) for a list of attributes.""" return _has_code_flag(obj, CO_GENERATOR)
czyli chyba trzeba
type(infinite_sequence) == generator tymczasem mam type(infinite_sequence) == function type(infinite_sequence()) == generator
Czy w związku z tym trzeba do nazwy funkcji przypisać jakoś generator ??
mój problem rozwiązany - yield zamiast pętli z generatorem rozwiązuje problem
Na jakiej podstawie trzeba zmienić ułamek 0.1, aby był palindromem? Mam na myśli: jaka musi być wartość, aby assert is_palindrome(0.1) zwracał True? W wikipedii jest wspomiane tylko o liczbach całkowitych nieujemnych, ale nawet sprawdzając ten warunek nadal test nie przechodzi :/