Przydatne funkcje w języku Python cz. 2 | Korepetycje do matury z informatyki - Maurycy Gast

Przydatne funkcje w języku Python cz. 2

Osoby programujące w C++ zauważyły na pewno, że w tym języku każda funkcja ze standardu std wymaga zaimportowania odpowiednich bibliotek. Dużo łatwiej jest używać funkcji z języka Python, gdyż większa część tych, które będą interesować nas na maturze, nie wymagają żadnego importowania. Można ich używać bez martwienia się o ich dostępność. Wyjątek stanowią niestety funkcje matematyczne, które wymagają importu biblioteki math. Poniżej przedstawię wam kolejne przyjazne w kontekście zadań maturalnych funkcje, a następnie omówimy parę najważniejszych funkcji matematycznych.­­

Obsługa list

Listy w języku Python to podstawowy kontener na dane. Aby sprawnie z nich korzystać warto znać parę wbudowanych metod, służących do ich edycji. Przydatnymi funkcjami są np. append(), extend().

Zacznijmy od najprostszych. Aby rozszerzyć listę możemy użyć metod append() oraz extend(). Pierwsza z nich dodaje na koniec listy element przekazany jako argument, druga zaś rozszerza listę o wszystkie elementy podane jako lista w argumencie. Można powiedzieć, że extend() łączy dwie listy  w jedną.

lista = [1, 2, 3, 4]
lista.append(5)         # lista = [1, 2, 3, 4, 5]
lista.extend([6, 7])    # lista = [1, 2, 3, 4, 5, 6, 7]
lista.append([8, 9])    # lista = [1, 2, 3, 4, 5, 6, 7, [8, 9]]
                        # prawdopodobnie jest to błąd, ponieważ do listy została wrzucona kolejna lista
lista.extend(10)        # błąd – argumentem extend() musi być lista

W przypadku wielu zadań maturalnych będziemy mogli skorzystać z metody remove(), której zadaniem, jak sama nazwa wskazuje, jest usunięcie z listy któregoś elementu. Elementem tym będzie pierwsze znalezione wystąpienie argumentu. Np.:

lista = [1, 2, 1, 2, 2, 3]
lista.remove(3)    # lista = [1, 2, 1, 2, 2]

Warto w tym miejscu omówić także metodę count(), która z kolei policzy wszystkie wystąpienia argumentu. Korzystając z obu funkcji można stworzyć całkiem prostą, a przyjazną pętlę, która usunie wszystkie wystąpienia danego elementu:

lista = [1, 2, 1, 2, 2, 3]
while lista.count(2):
    lista.remove(2)

# w tym momencie (po opuszczeniu pętli) - lista = [1, 1, 3]

Czasem jednak potrzebujemy usunąć z listy element na konkretnej pozycji. Wówczas możemy użyć metody pop(). Przekazujemy do niej indeks elementu w liście, który chcemy usunąć. Innym sposobem usuwania jest słowo kluczowe del, które w przypadku listy zadziała tak samo jak metoda pop(). W praktyce użycie del pozwala także na zastosowanie omówionego wcześniej slicingu. Poniżej przedstawiam parę przykładów usuwania elementów w liście:

lista = [1, 2, 3, 4, 5]
lista.pop(2)     # lista = [1, 2, 4, 5]
del lista[2]     # lista = [1, 2, 5]
del lista[1:]    # lista = [1]

Warto poświęcić w tym momencie chwilę na przećwiczenie usuwania oraz przypomnienie sobie slicingu. Jeśli potrzebujesz odświeżyć wiedzę na ten temat, zapraszam do poprzedniej części wpisu.

Operacje na stringach

Należy zaznaczyć, że powyższe operacje nie działają na łańcuchach znaków. Wyjątkiem jest omówiona w poprzedniej części wpisu funkcja count oraz słowo kluczowe del, które w przypadku stringów może jedynie usunąć cały łańcuch znaków, a nie poszczególne jego litery.

W przypadku stringów mamy jednak do dyspozycji jeszcze kilka znaczących funkcji. Możemy na przykład rozdzielić napis do formy tablicy lub złączyć tablicę napisów do jednego stringa.

napis = 'Matura 2020! Zdamy to!'
print(napis.split())             # ['Matura', '2020!', 'Zdamy', 'to!']
print(napis.split(sep='!'))      # ['Matura 2020', ' Zdamy to', '']
                                 # w przypadku, gdy separator występuje na ostatnim miejscu, na końcu listy znajdzie się pusty string
wyrazy = ['Matura', '2020!', 'Zdamy', 'to!']
separator = '_'                  # element ten posłuży jako znak/wyraz rozdzielający powyższe elementy listy
print(separator.join(wyrazy))    # Matura_2020!_Zdamy_to!

Sortowanie

Sortowanie odgrywa istotną rolę w przypadku zadań maturalnych. W języku Python posortowanie tablicy jest równoważne z wywołaniem jednej metody i ewentualnym dodaniem do niej parametru reverse=True:

lista = [1, 3, 2, 56, 23]
lista.sort()                # lista posortowana rosnąco - [1, 2, 3, 23, 56]
lista.sort(reverse=True)    # lista posortowana malejąco – [56, 23, 3, 2, 1]

Dodatkową funkcją, którą warto omówić jest sorted(). Tworzy ona osobną posortowaną listę z elementów listy zawartej w argumencie. Również w tym przypadku może być ona posortowana rosnąco oraz malejąco.

lista = ['ala', 'ma', 'kota']
lista_posortowana_rosnaco = sorted(lista)                   # ['ala', 'kota', 'ma']
lista_posortowana_malejaco = sorted(lista, reverse=True)    # ['ma', 'kota', 'ala']

Obie funkcje sort() i sorted() działają zarówno na tablicach liczb oraz tablicach stringów.

Korzystając z funkcji join oraz sorted można w ciekawy, prosty sposób, bez użycia żadnej pętli wypisać posortowaną tablicę z wybranym przez nas formatowaniem, np.:

lista_imion = ['Gabrysia', 'Klaudia', 'Andrzej', 'Marcin']
separator = ', '
print(separator.join(sorted(lista_imion)))    # Andrzej, Gabrysia, Klaudia, Marcin

­Funkcje matematyczne

Przejdźmy do funkcji matematycznych. Dostępnych jest parę funkcji, których możemy użyć bez importowania bilbioteki math. Przykładem będzie abs(), która oblicza wartość bezwzględną liczby:

print(abs(2020))     # 2020
print(abs(-2020))    # 2020

Inne funkcje wymagają od nas zaimportowania biblioteki math. Aby to zrobić musimy na początku programu wpisać poniższą linijkę:

import math

Wówczas dostępne staną się dla nas funkcje oraz stałe matematyczne, które trzeba poprzedzić nazwą biblioteki np.:

math.sin(math.pi)

Jeśli natomiast nie chcemy za każdym razem pisać przedrostka “math.”, linijka importu powinna wyglądać nieco inaczej:

from math import *

W takim wypadku można posługiwać się już funkcjami bez użycia nazwy biblioteki:

cos(pi/2)

Zauważ, że przy okazji omówiliśmy już 2 funkcje trygonometryczne oraz jedną stałą – sin(), cos() oraz pi. Funkcje te obliczają sinus lub cosinus argumentu, którym jest miara kąta podana w radianach. Pi jest to stała, która określa liczbę pi = 3.1415…, co odpowiada 180 stopni. Jeśli chcemy jednak podać kąt w stopniach, musimy użyć funkcji, która zamieni je na miarę radialną – radians(). Analogicznie możemy użyć funkcji degrees(), która zamieni radiany na stopnie. W takim przypadku możemy napisać na przykład:

print(tan(radians(45)))    # 0.9999999999999999 = ok. 1, wynik z niewielką niedokładnością
print(degrees(pi))         # 180.0

Warto zaznaczyć, że o ile dysponujemy funkcją tan(), która oblicza tangens liczby, to nie istnieje funkcja kotangens. Aby obliczyć kotangens liczby, musimy zatem obliczyć odwrotność tangensa – podzielić 1 przez tangens.

Istnieją również funkcje odwrotne do funkcji trygonometrycznych asin(), acos(), atan(). Nie będziemy jednak na nie poświęcać czasu, ponieważ ich użycie na maturze prawdopodobnie nie będzie wymagane. Warto jednak poświęcić chwilkę i spojrzeć na dostępne funkcje w bibliotece math. Dokumentację można znaleźć pod linkiem:

https://docs.python.org/3/library/math.html

Jeśli nie straszny jest nam język angielski, wiele z tych funkcji wystarczy kojarzyć po nazwie, a ich użycie jest bardzo intuicyjne. Matematyczne terminy anglojęzyczne mogą jednak nie być przez nas stosowane na co dzień. Terminem takim jest na przykład gcd (greatest common divisor), czyli największy wspólny dzielnik (nwd). Również w matematycznej bibliotece Python jest taka funkcja, za pomocą której możemy również obliczyć nww (najmniejszą wspólną wielokrotność) – zgodnie z zależnością matematyczną A*B = NWD(A, B)*NWW(A, B).

a = 16
b = 88
nwd = gcd(a, b)             # 8
nww = a*b/math.gcd(a, b)    # 176

Wpisy, które mogą Cię zainteresować:



Dodaj komentarz

kurs maturalny informatyka