Zaawansowany kurs programowania w Pythonie
Rozdział
>
Poziom
Moduły matematyczne
Rozszerzony moduł matematyczny
Cel
Oblicz nowe rozszerzenia gruntów farmy, używając większej liczby funkcji importowanych z modułu math.
Po drugiej stronie mostu, w aneksie, znajdują się biura wykorzystywane do pomiaru niezagospodarowanych gruntów, które łączą dwie różne części farmy. Tutaj znajdziemy wymiary i pomiary terenu, więc dobrym pomysłem będzie ich posortowanie i udokumentowanie danych. Możesz to osiągnąć, używając modułu math; na tym poziomie zapoznamy się z nowym zestawem jego funkcji, które możemy wykorzystać do przetwarzania danych. Używasz tej samej składni import math oraz math. przed funkcjami, aby korzystać z tego zestawu:
math.radians(): Konwertuje stopnie na radiany/kąty.math.floor(): Zaokrągla liczbę w dół do najbliższej liczby bazowej.math.ceil(): Zaokrągla liczbę w górę do wyższej liczby.math.atan2(): Zwraca arcustangens między dwiema liczbami w radianach.math.isclose(): Sprawdza, czy dwie liczby są do siebie bliskie, zwraca true/false.math.fsum(): Sumuje liczby zmiennoprzecinkowe (dziesiętne) z listy lub innego iterowalnego obiektu.math.dist(): Oblicza odległość między dwoma punktami; wartości muszą być w postaci list lub innego iterowalnego obiektu.
Rozpocznij zbieranie surowych danych z wykresów, idąc do jasnych znaków X na czerwonym i niebieskim dywanie. Użyj funkcji read(), aby zidentyfikować surowe wymiary potrzebne do wykonania pomiarów. Te pomiary są już zapisane w czterech stałych zmiennych o nazwach: red_x, red_y, blue_x oraz blue_y.
Gdy oba zestawy danych zostaną zidentyfikowane, udaj się do ciemnego znaku X na pomarańczowym dywanie i staw czoła biurku. Użyj funkcji math.radians() oraz math.ceil(), aby przekształcić zmienne blue_x i blue_y na radiany i zaokrąglić je w górę. Użyj float(), aby upewnić się, że stałe są liczbami zmiennoprzecinkowymi, które można edytować. Na przykład, dla zmiennej blue_x: przekształć na radiany blue_x = math.radians(float(blue_x)) i zaokrągl wartość blue_x = math.ceil(float(blue_x)). Zrób to samo dla blue_y przy tym znaku X, a następnie użyj wcześniej przygotowanej funkcji write() i dodaj zmienne blue_x oraz blue_y, aby zanotować je na wykresie.
Udaj się do ciemnego znaku X na zielonym dywanie i użyj funkcji math.radians() oraz math.floor(), aby przekształcić zmienne red_x i red_y na radiany i zaokrąglić je w dół. Na przykład, dla zmiennej red_x: przekształć na radiany red_x = math.radians(red_x) i zaokrągl wartość blue_x = math.floor(red_x). Zrób to samo dla red_y przy tym znaku X, a następnie użyj wcześniej przygotowanej funkcji write() i dodaj zmienne red_x oraz red_y, aby zanotować je na wykresie.
Udaj się do złotego znaku X i staw czoła biurku, gdzie stworzymy dwie nowe zmienne: data_a oraz data_b. Będziemy przechowywać w nich arcustangens każdego zestawu, używając funkcji math.atan2. Dla data_a użyj zmiennych blue_x i blue_y jako argumentów funkcji, w ten sposób: data_a = math.atan2(blue_x,blue_y). Dla data_b postąp podobnie, ale użyj zmiennych red_x i red_y. Po zakończeniu użyj wcześniej przygotowanej funkcji write() i dodaj zmienne data_a oraz data_b, aby zanotować je na wykresie.
Teraz, gdy dolne biurka zostały obsłużone, udaj się do ciemnego znaku X na fioletowym dywanie, stwórz zmienną o nazwie comparison i użyj jej z funkcją math.isclose(), przekazując jako argumenty data_a oraz data_b, w ten sposób: comparison = math.isclose(data_a, data_b). Użyj wcześniej przygotowanej funkcji write() z tą zmienną przy znaku X.
Przejdź do znaku X na białym dywanie, stwórz listę o nazwie data_list i dodaj do niej kolejno data_a oraz data_b. Utwórz zmienną o nazwie total i użyj funkcji math.fsum() z data_list jako argumentem, w ten sposób: total = math.fsum(data_list). Użyj zmiennej total z wcześniej przygotowaną funkcją write() przy tym znaku X.
Przejdź do ciemnego znaku X na żółtym dywanie i staw czoła biurku, przekonwertuj data_a oraz data_b na pojedyncze wartości listowe, na przykład dla data_a wykonaj: data_a = [data_a]. Zrób to samo dla data_b, aby obie zmienne stały się iterowalne i mogły być użyte z funkcją math.dist(). Utwórz zmienną o nazwie distance i użyj jej do przechowania wyniku funkcji math.dist(), korzystając z data_a i data_b jako argumentów. Użyj zmiennej distance z wcześniej przygotowaną funkcją write(), aby zakończyć poziom.