7B: Math

Lekcja 7 składa się z trzech części A, B, C, które można wykonać w dowolnej kolejności.

Do tej pory wykonaliśmy obliczenia matematyczne przy użyciu operatorów Pythona +, -, *, / i funkcji max i min. W tej lekcji zobaczymy więcej operatorów i funkcji oraz nauczymy się wykonywać bardziej skomplikowane obliczenia.

Operatory Matematyczne

Widzieliśmy już jak używać operatory dodawania (a + b), odejmowania (a - b), mnożenia (a * b) i dzielenia (a / b). Poznamy teraz trzy dodatkowe operatory.

  • Operator potęgi a ** b oblicza ab (a pomnożone przez siebie b razy); np. 2 ** 3 daje 8 (czyli 2 × 2 × 2).
  • Operator dzielenia całkowitego a // b oblicza "iloraz" a dzielonego przez b i ignoruje resztę; np. 14 // 3 daje 4.
  • Operator modulo a % b oblicza resztę z dzielenia a przez b; np. 14 % 3 wynosi 2.

Przykład
Potęga, dzielenie całkowite i modulo

Zadanie na kodowanie : Eggsactly
Każdy karton jajek zawiera dokładnie 12 jaj. Napisz program, który z input() odczytuje liczbę jaj, a następnie drukuje dwie liczby: ile kartonów można wypełnić tymi jajami i ile jaj pozostanie. Na przykład, wyjście odpowiadające 27 jajom będzie:

2
3
ponieważ 27 jaj wypełnia 2 kartony, pozostawiając 3 jaja. Wskazówka
Możesz wprowadzić dane dla programu w poniższym polu.

Operator modulo jest używany do różnych zadań. Może być użyty do odpowiedzi na takie pytania jak:

  • Jeśli teraz jest godzina dziesiąta, to która będzie za 100 godzin, licząc od teraz? (wymaga użycia modulo 12)
  • Czy rok 2032 będzie rokiem przestępnym? (wymaga użycia modulo 4, 100 i 400)

Sprawdzanie lat przestępnych jest przykładem testu na podzielność; w następnym ćwiczeniu poprosimy cię o napisanie programu, który ogólnie sprawdza podzielność.

Zadanie na kodowanie : Podzielność
Napisz program, który odczytuje dwie dodatnie liczby całkowite a i b w oddzielnych liniach. Jeśli a jest podzielne przez b, wydrukuj komunikat "divisible" (podzielne). W przeciwnym razie niech pojawi się komunikat "not divisible" (niepodzielne). Na przykład, gdy na wejściu jest

14
3
program powinien wydrukować "not divisible". Wskazówka
Możesz wprowadzić dane dla programu w poniższym polu.

Funkcje Matematyczne

Python może dokonać obliczenia większości funkcji matematycznych, które znajdują się w kalkulatorze naukowym.

  • sqrt(x) oblicza pierwiastek kwadratowy z liczby x.
  • exp(x) i log(x) to funkcja wykładnicza (z podstawą: e) i logarytm naturalny.
  • sin(x), cos(x), tan(x) i inne funkcje trygonometryczne.
  • pi stała matematyczna 3.1415... jest również uwzględniona.

Kiedy używasz funkcji trygonometrycznych Pythnie, kąt x musi być wyrażony w radianach, a nie w stopniach.

Python zawiera tak dużą liczbę funkcji, że są one łączone w grupy zwane modułami. Powyższe funkcje należą do modułu math. Przed użyciem dowolnej funkcji z danego modułu należy zaimportować moduł zgodnie z poniższym przykładem. Aby użyć funkcji z modułu należy wpisać nazwę modułu, kropkę, a następnie nazwę funkcji.

Przykład
Użycie funkcji z modułu math

Zadanie na kodowanie : Koła z Pizzy
Twoi znajomi zjedli kwadratową pizze a teraz zamówią okrągłą. Napisz program, który obliczy pole tej okrągłej pizzy. Na wejściu pobieramy liczbę typu float r, która reprezentuje promień w cm. Wyjście powinno być polem w cm2 obliczonym przy użyciu wzoru A=pi * r2.. Zamiast wpisywać 3.1415 ... użyj pi z modułu math Pythona.
Możesz wprowadzić dane dla programu w poniższym polu.

Zadanie na kodowanie : Średnia Geometryczna
Średnia geometryczna dwóch liczb a i b jest liczbą

\sqrt{ab}

(Jest używana do porównywania proporcji ekranów i do opisywania średniej szybkości wzrostu populacji). Napisz program, który na wejściu w dwóch wierszach czyta dwie dodatnie liczby typu float a na wyjściu podaje ich średnią geometryczną.
Example: Jeśli na wejściu mamy:

5.0
20.0
na wyjściu powinniśmy otrzymać 10.0.
Możesz wprowadzić dane dla programu w poniższym polu.

Łącząc Wszystko Razem

Jak widać z poprzedniego ćwiczenia, możemy budować wyrażenia matematyczne łącząc operatory. Python dokonuje oceny operatorów używając "kolejności operacji", tej samej, o której uczymy się w klasie na matematyce:

Pierwszeństwo mają nawiasy, potem potęgowanie, następnie dzielenie i mnożenie, a na końcu dodawanie i odejmowanie.
Dzielenie całkowite i modulo należą do kategorii "dzielenie i mnożenie".

Na przykład w wyrażeniu:

3 * (1 + 2) ** 2 % 4
najpierw wykonywane jest działanie w nawiasie (1 + 2 = 3), potem (3 ** 2 = 9), następnie mnożenie (3 * 9 = 27), a na koniec modulo, dając wynik końcowy wynoszący 27 % 4 = 3.

Zadanie krótkiej odpowiedzi: Kolejność operacji
Obliczyć wartość wyrażenia Pythona

6 - 52 // 5 ** 2
Bezbłędnie!

Dzielenie całkowite z liczbami ujemnymi: Wyrażenia a // b i int(a / b) są takie same, gdy a oraz b są dodatnie. Jednakże, gdy a jest ujemne, a // b używa "zaokrąglenia do minus nieskończoności", a int(a / b) używa "zaokrąglenia do zera".

Przykład
Dzielenie całkowite liczb ujemnych

Liczba całkowita i liczba zmiennoprzecinkowa

Wynikiem wyrażenia matematycznego jest liczba. Jak widzieliśmy wcześniej, każda liczba jest zapisywana w jednym z dwóch możliwych typów: int lub float. Typ int reprezentuje liczby całkowite, zarówno dodatnie jak i ujemne, które mogą być tak duże, jak tylko chcesz.

Python nie akceptuje liczb zapisanych w formie 1 000 000 or 1,000,000. Zamiast tego stosuje 1000000.

Typ float reprezentuje liczby dziesiętne. Podobnie jak zwykły kalkulator, przechowuje 1/3 jako przybliżoną wartość 0.33333333, Python również przechowuje liczby dziesiętne jako ich przybliżone wartości.

Ponieważ Python używa aproksymacji (przybliżania) liczb dziesiętnych, niektóre równania, które są matematycznie prawdziwe, mogą nie być prawdziwe w Pythonie.
Przykład
Przykład
Z tego powodu, ważne jest, aby uwzględnić te przybliżenia w przypadku porównywania liczb typu float. Na przykład w automatycznym testerze, używanym przez tę witrynę internetową, każde wyjście typu float jest oznaczone jako poprawne, jeśli w przybliżeniu jest równe oczekiwanej odpowiedzi.

Kończymy tę lekcję ćwiczeniami.

Pytanie dotyczące umiejętności testowania.
Jako "Test Kompetencji" podajemy trzy liczby całkowite i poprosimy o dodanie pierwszych dwóch liczb, a następnie pomnożenie wyniku przez trzecią liczbę. Napisz program czytający trzy liczby i drukujący poprawną odpowiedź. Wskazówka

Zadanie na kodowanie : Test Kompetencji
Jako "Test Kompetencji" podajemy trzy liczby całkowite i poprosimy o dodanie pierwszych dwóch liczb, a następnie pomnożenie wyniku przez trzecią liczbę. Napisz program czytający trzy liczby i drukujący poprawną odpowiedź.Wskazówka
Możesz wprowadzić dane dla programu w poniższym polu.

Zadanie na kodowanie : Użycie Stóp
W tym programie na wejściu mamy liczbę zmiennoprzecinkową reprezentującą wysokość mierzoną w stopach. Napisz program, który wyprowadzi odpowiednią wysokość w centymetrach przy użyciu wzoru konwersji 1 stóp = 30,48 cm. Na przykład, jeśli na wejściu mamy 0,5, to wyjście powinno wynosić 15,24.
Możesz wprowadzić dane dla programu w poniższym polu.

Zadanie na kodowanie : Grawitacja
Paczka z prędkością v m/s została rzucona w dół z samolotu z wysokości 11000 m. Gdy spada, jej odległość od ziemi jest wyrażona wzorem -4.9t2 - vt + 11000, gdzie t jest czasem w sekundach od jej wyrzucenia. Napisz program, który poda czas potrzebny do dotarcia do ziemi. Na wejściu do programu mamy dodatnią liczbę zmiennoprzecinkową v. Wymagany czas jest podany wzorem

\displaystyle{t=\frac{v-\sqrt{v^2-4(-4.9)(11000)}}{2(-4.9)}}

Możesz wprowadzić dane dla programu w poniższym polu.

Gratulacje! Po zakończeniu tych ćwiczeń jesteś gotowy, aby przejść do innej lekcji.