Jak obliczyć odwrotność liczby w Pythonie i efektywne algorytmy

Poznaliśmy już sporą część składni języka Python, co pozwala na tworzenie dowolnie skomplikowanych programów za pomocą prostych kodów.

Algorytmy i ich reprezentacja

Często spisanie czegoś na kartce papieru znacznie ułatwia rozwiązanie.

Algorytm do wykonania zadania nazywamy właśnie algorytmem, który będzie pewną sekwencją instrukcji czy operacji prostych. Aby podać dany algorytm możemy posłużyć się jednym z wielu zapisów: czasami można po prostu podać wzór matematyczny.

Kolejną możliwością jest podanie przepisu w postaci schematu blokowego. Naszkicuj taki schemat programu na wyszukiwanie liczby większej z dwóch podanych.

Inną możliwością jest prezentacja algorytmu za pomocą pseudo-kodu.

Przeczytaj także: Biblioteki Pythona do Filtracji Sygnałów

Pseudo-kod

Spróbuj napisać pseudo kod dla problemu liczby większej z dwóch podanych. Zobaczmy na przykład, czy napiszesz go po polsku czy angielsku.

Załóżmy, że chcemy policzyć silnię liczby naturalnej n.

Można sobie zadać pytanie? Który z nich jest lepszy? może żaden? Trzy pierwsze kryteria są raczej oczywiste: wykorzystaniu minimalnych zasobów maszyny zwróci wynik w naj najszybszym czasie.

Starajcie się raczej programować czytelnie, zamiast osiągać stosując np. triki czy zaawansowane techniki programistyczne.

Efektywność programu

Ocena efektywności samego programu nie jest takie oczywiste. Którą metodę wybrać? wybieramy opcję (a). I w końcu ostatni punkt. Z pozoru najmniej istotny.

Przeczytaj także: Sterowniki i usterki ASUS K52J

Można sprawdzić czas działania programu za pomocą stopera, aby sprawdzić, jakie zasoby sprzętowe będę potrzebne do jego stabilnej pracy.

Im większe N tym dłużej maszyna musi obliczać sumę ciągu. Do problemu sumy częściowej możemy też podejść nieco inaczej. Program z ActiveCode 5 nieco więcej się wykonać.

Obliczeniowa programu z ActiveCode 5 jest liniowa dla N. Mówimy wtedy, że jest \(O(N)\). W przypadku programu z ActiveCode 9 mamy do czynienia ze stałą złożonością obliczeniową. Mówimy wtedy, że tempo wzrostu czasu wykonania programu jest rzędu \(O(f(n))\). Działania programu jest niezależna od podanego N (np. wywołanie funkcji).

Napisałeś, że potrzebujesz funkcji. Ta funkcja ma mieć wynik. Musisz więc zamienić te znaki na liczby, aby dodawanie mogło się udać.

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 wymaga ż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.

Przeczytaj także: Zastosowanie wężyków do filtra osmozy

Operacje na listach w Pythonie

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().

Aby rozszerzyć listę, możesz 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ą.

Przykład:

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]] - tutaj występuje błąd, bo listę dodano jako pojedynczy element z pomocą append, a nie extend

W przypadku wielu zadań maturalnych będziesz mógł skorzystać z metody remove(), której zadaniem, jak sama nazwa wskazuje, jest usunięcie z listy któregoś elementu.

Czasem potrzebujesz usunąć z listy element na konkretnej pozycji. Wówczas możesz użyć metody pop. Przekazujesz do niej indeks elementu w liście, z której chcesz go usunąć. Innym sposobem usuwania jest słowo kluczowe del, które w przypadku listy zadziała tak samo jak metoda pop.

  • Zwracanie usuniętego elementu - pop, po użyciu zwraca element, który został usunięty.
  • Użycie slicingu - w przypadku del, możliwe jest użycie tego typu instrukcji, np. del my_list[2:4], co nie jest możliwe jeśli chodzi o pop.

Przykłady 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]
lista = [1, 2, 3, 4, 5]
del lista[1:4] # lista = [1, 5] slicing razem z del

Ciekawym zastosowaniem del oraz slicingu, jest również usuwanie co drugiego elementu (można też wybrać inną wielokrotność indeksów).

Przykład:

lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Usuwa co drugi element od indeksu 1 do 8, czyli usuwa cyfry 2, 4, 6, 8
del lista[1:8:2] # lista = [1, 3, 5, 7, 9, 10]
lista = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Automatycznie został wybrany ostatni indeks danej listy
# Usuwa co drugi element od indeksu 1 do końca
del lista[1::2] # lista = [1, 3, 5, 7, 9]

Operacje na stringach w Pythonie

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

Przykład:

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

Sortowanie w języku Python

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:

Przykład:

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.

Przykład:

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. Jednak warto pamiętać o tym, że sortowanie liczb jako tekstu, zwróci nieprawidłowe wyniki.

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 Ciebie formatowaniem, np.:

Przykład:

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

Funkcje matematyczne w Pythonie

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

Przykład:

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

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

import math

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

Jeśli natomiast nie chcesz 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:

Moduł Math dostarcza narzędzi do pracy z funkcjami trygonometrycznymi, algebraicznymi, geometrycznymi, statystycznymi i innymi.

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 chcesz jednak podać kąt w stopniach, musisz 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żesz napisać na przykład:

tags: #python #jak #obliczyć #odwrotność #liczby

Popularne posty: