Klasa Punkt
Treść zadania
Zaprojektuj klasę Punkt opisującą punkt na płaszczyźnie:
- Konstruktor
__init__(self, x=0, y=0)zapamiętuje współrzędne. - Metoda statyczna
odleglosc(p1, p2)zwraca odległość między punktamip1ip2:
$\sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2}$. - Metoda
__str__()zwraca napis z współrzędnymi w postaci(x, y), np.(5, -3). - Metoda
__eq__(other)sprawdza, czy dwa punkty są równe (obie współrzędne identyczne). Operator!=Python wyznaczy wtedy sam.
Program wczytuje współrzędne punktów $A$ i $B$, tworzy dwa obiekty Punkt, wypisuje je, podaje odległość między nimi i informuje, czy punkty są równe.
Dane wejściowe
- 1. linia: dwie liczby całkowite $x_A$ i $y_A$ oddzielone spacją
- 2. linia: dwie liczby całkowite $x_B$ i $y_B$ oddzielone spacją
Dane wyjściowe
Cztery linie:
Punkt A: (xA, yA)
Punkt B: (xB, yB)
Odległość między punktami A i B: <odległość>
Punkty są równe.
Odległość wypisz z dokładnością do 2 miejsc po przecinku. W ostatniej linii wypisz Punkty są równe. albo Punkty są różne.
Ograniczenia
- $-1000 \le x, y \le 1000$
Przykład
5 5 -3 -3
Punkt A: (5, 5) Punkt B: (-3, -3) Odległość między punktami A i B: 11.31 Punkty są różne.
$\sqrt{8^2 + 8^2} = \sqrt{128} \approx 11.3137$.
Potrzebujesz teorii?
Zasady obowiązujące w rozdziale 18
Zadania w tym rozdziale uczą projektowania klas: konstruktora __init__, atrybutów, metod, metod statycznych (@staticmethod) oraz metod specjalnych, dzięki którym obiekty można wypisywać (__str__), porównywać (__eq__) i łączyć operatorami (__add__, __sub__, __mul__, …). Ostatnie zadania wprowadzają też wyjątki (raise, try/except), klasy danych (@dataclass) i generatory (yield).
Konwencje wspólne:
- Każde zadanie to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
- W każdym zadaniu dostajesz kod startowy ze szkieletem klasy, a zwykle także z gotowym wczytywaniem danych i wypisywaniem wyników. Twoim zadaniem jest przede wszystkim uzupełnienie metod klasy — wynik programu zależy od tego, jak działa Twoja klasa.
- Nazwy klas i metod podane w treści są obowiązkowe (kod startowy z nich korzysta). Nazwy w kodzie piszemy bez polskich znaków, np.
Kolo,Prostokat. - „Z dokładnością do 2 miejsc po przecinku” oznacza dokładnie dwie cyfry po kropce, np.
f"{x:.2f}"(3.00,-0.50). - Program nie wypisuje komunikatów typu „Podaj liczbę:”.
Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.
Przywrócono Twój zapisany kod.
Python uruchomi się w przeglądarce przy pierwszym teście.
Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.
Testy
Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.
Test 1
Nie uruchomiono0 0 3 4
Punkt A: (0, 0) Punkt B: (3, 4) Odległość między punktami A i B: 5.00 Punkty są różne.
Test 2
Nie uruchomiono1 2 1 2
Punkt A: (1, 2) Punkt B: (1, 2) Odległość między punktami A i B: 0.00 Punkty są równe.
Test 3
Nie uruchomiono-2 1 4 -7
Punkt A: (-2, 1) Punkt B: (4, -7) Odległość między punktami A i B: 10.00 Punkty są różne.
Test 4
Nie uruchomiono2 3 3 2
Punkt A: (2, 3) Punkt B: (3, 2) Odległość między punktami A i B: 1.41 Punkty są różne.
Test 5
Nie uruchomiono7 -3 7 5
Punkt A: (7, -3) Punkt B: (7, 5) Odległość między punktami A i B: 8.00 Punkty są różne.