Wyszukiwanie z Pythonem
Wyszukiwanie i porównywanie pozwalają porządkować nasz świat. W sklepie szukamy największego jabłka, po podliczeniu wyników rozgrywki w grę planszową sprawdzamy, kto zdobył najwięcej punktów, na zawodach sportowych wygrywa ten, kto dalej rzucił albo skoczył. W każdej z tych sytuacji mamy zbiór wartości, które ze sobą porównujemy. W tym materiale opiszemy algorytm wyszukiwania największej wartości spośród pobranych z klawiatury lub podanych w liście.
Która liczba jest większa?
Wyszukiwanie największego (lub najmniejszego) elementu wymaga umiejętności wykonywania porównań, zaczniemy więc od prostego zadania: wypiszemy wartość większej z dwóch pobranych liczb.
Specyfikacja algorytmu:
Dane wejściowe:
a,b(a ≠ b) – liczby naturalne
Wynik:
max_e– liczba naturalna, wartość większej liczby
Zapoznajmy się z algorytmem przedstawionym za pomocą listy kroków:
Wczytaj
a,b.Jeżeli
ajest większe odb, domax_eprzypisza, w przeciwnym razie domax_eprzypiszb.Wypisz
max_ei zakończ algorytm.
Napiszemy teraz program, który wykona nasze zadanie.
Do pisania programu użyj dostępnego w swoim środowisku edytora, np. IDLE dołączonego do standardowej instalacji Pythona.
Zacznijmy od pobrania danych.
Skopiuj kod, wklej do pustego pliku i zapisz pod nazwą max_ab.py.
W pliku max_ab.py poniżej odpowiednich komentarzy dodaj instrukcje pobierające z klawiatury dwie liczby naturalne i zapamiętujące je w zmiennych o nazwach a i b. Użyj funkcji input() i int().
W języku Python nazwa max jest słowem zarezerwowanym dla funkcji zwracającej maksymalny element z sekwencji, dlatego w programach będziemy używali nazwy max_e.
Pobrane liczby trzeba porównać, potrzebujemy więc instrukcji warunkowej.
W programie max_ab.py dodaj instrukcję sprawdzającą warunek a > b. Jeżeli warunek będzie prawdziwy, do max_e przypisz a, w przeciwnym razie przypisz b. Użyj instrukcji warunkowej if.
Sprawdź działanie programu.
Przetestuj program max_ab.py dla dwóch zestawów danych:
Algorytm wyszukiwania największego elementu
Szukanie największej z kilku podanych liczb również polegać będzie na porównywaniu. Pierwszą pobraną liczbę zapamiętamy w zmiennej pomocniczejzmiennej pomocniczej max_e. Każdą następną liczbę będziemy porównywać z wartością max_e i jeżeli będzie większa, jej wartość zapiszemy w max_e. Liczbę pobieranych wartości oznaczymy jako n. Taki sposób znajdowania największej wartości spośród n liczb jest przykładem przeszukiwania liniowegoprzeszukiwania liniowego.
Sformułujmy zadanie: wypisz wartość największej z n pobranych liczb naturalnych.
Specyfikacja algorytmu:
Dane wejściowe:
n– liczba naturalna, liczba pobranych liczba– liczba naturalna, zmienna pomocnicza przechowująca pobraną liczbę
Wynik:
max_e– liczba naturalna, wartość największej pobranej liczby
Przeanalizujmy algorytm zapisany za pomocą listy kroków:
Wczytaj
n.Wczytujemy pierwszą liczbę i przypisujemy ją do zmiennej
max_e.Powtórz
n - 1razy:
3.1. Wczytaja.
3.2. Jeżeliajest większe odmax_e, domax_eprzypisza.Wypisz
max_ei zakończ algorytm.
Zauważmy na początku, że zaprezentowany algorytm wyszukiwania największego elementu jest algorytmem iteracyjnymalgorytmem iteracyjnym. Żeby algorytm działał poprawnie w kroku 2 (przed pętlą) przyjmujemy, że pierwsza podana liczba jest największa i przypisujemy ją do zmiennej max_e. Z tego powodu pętla, w której pobieramy i porównujemy kolejne liczby, wykonuje się n‑1 razy.
Przeanalizujmy algorytm wyszukiwania elementu największego dla n = 5.
Powtórzenie | Pobierana liczba | Porównanie | Działanie |
|---|---|---|---|
1 | 4 | - |
|
2 | 8 |
|
|
3 | 2 |
| - |
4 | 7 |
| - |
5 | 10 |
|
|
Liczba powtórzeń: 5. | |||
Jeżeli w omawianym algorytmie zmienimy warunek a > max_e na a < max_e lub też zamienimy miejscami porównywane wartości max_e > a, algorytm będzie wyszukiwał element najmniejszy.
Zapis algorytmu w postaci programu
Napiszemy teraz program, który pozwoli na znajdowanie największej z pobieranych liczb.
Skopiuj poniższy kod, wklej do pustego pliku i zapisz pod nazwą np. max_n.py.
W pliku max_n.py po pierwszym komentarzu dodaj instrukcję, która pobierze z klawiatury dodatnią liczbę naturalną n. Poniżej drugiego komentarza dodaj instrukcję, która pobierze z klawiatury pierwszą liczbę i przypisze ją do zmiennej max_e. Użyj funkcji input() i int().
Pętla
Po pobraniu pierwszej liczby powtarzamy operacje pobierania i porównywania kolejnych liczb. Do zapisania tych operacji w programie będziemy potrzebowali pętli for, która powinna wykonać się n‑1 razy, ponieważ pierwszą liczbę wczytujemy wcześniej. Wewnątrz pętli po pobraniu kolejnej liczby umieścimy instrukcję warunkową, która będzie sprawdzała, czy podana wartość jest większa od zapamiętanej w zmiennej max_e. Jeżeli tak, wartość liczby zapiszemy w max_e.
W pliku max_n.py pod komentarzem pobierz n - 1 liczb umieść:
pętlę, która wykona się
n - 1;użyj instrukcjifori inrange(),wewnątrz pętli instrukcję, która pobierze liczbę naturalną i zapisze pod nazwą
a,wewnątrz pętli instrukcję warunkową przypisującą
adomax_e, jeżeli waruneka > max_ebędzie prawdą.
Wyszukiwanie elementu najmniejszego
Wyszukiwanie elementu najmniejszego odbywa się na tej samej zasadzie, jak największego. Wystarczy, że zmienimy warunek sprawdzany w naszym programie, aby wynikiem była najmniejsza wprowadzona wartość.
Program max_n.py zapisz pod nazwą min_n.py. Zmień warunek a > max_e na a < min_e. Wszystkie pozostałe wystąpienia ciągu max_e zmień na min_e.
Notatnik
Animacja (samouczek)

Film dostępny pod adresem /preview/resource/Rh0oCQ7yBndiW
Film pt. Wyszukiwanie najmniejszego i największego elementu w liście.
Lista wyników w programie minmax_lista nie musi być generowana przez funkcję z modułu random. Równie dobrze wyniki mogą być pobierane od użytkownika.
Umieść znak komentarza przed instrukcją wyniki = choices(range(51), k = n). Poniżej wstaw pętlę for, w której pobierzesz n liczb od użytkownika i dodasz do listy wyniki.
Wskazówka: przed pętlą for umieść definicję pustej listy: wyniki = []
Wykorzystaj program minmax_lista z pętlą for pobierającą liczby od użytkownika. Przetestuj jego działanie, podając następujące dane: 3 5 4 2 4 5.
Odpowiedz na pytanie o to, które wystąpienie elementu największego znajduje algorytm, jeżeli element ten powtarza się na liście.
Zestaw ćwiczeń interaktywnych
Algorytm wyszukiwania liniowego polega na: Możliwe odpowiedzi: 1. porównywaniu kolejnych elementów zbioru z elementem szukanym, 2. porównywaniu wybranych elementów zbioru z elementem szukanym, 3. przeglądaniu elementów w losowej kolejności
a = int(input("Podaj liczbę: ")), 2. max_e = int(input("Podaj liczbę: ")), 3. max_e = a, 4. if a > max_e:, 5. for i in range(5):Ile razy wykona się pętla szukająca największego elementu w liście o rozmiarze
n? Możliwe odpowiedzi: 1. n-1 razy, 2. n razy, 3. n-2 razy[5, 9, 2, 9, 1, 9]. Wpisz, jaki będzie indeks największego znalezionego elementu. W razie problemów, prześledź kod z polecenia 5.Która operacja jest najważniejsza w algorytmie wyszukiwania największego elementu? Możliwe odpowiedzi: 1.
porównywanie, 2. iterowanie, 3. przypisanie, 4. indeksowanieif wyniki[i] < max_e, 2. for i in range(n, 0, -1), 3. wyniki[i] = max_eOpis problemu:
W liście n liczb całkowitych należy znaleźć element najmniejszy.
Specyfikacja problemu:
Dane wejściowe:
liczby– lista zawierająca liczby całkowiten – liczba elementów listy
Wynik
najmniejsza liczba z listy
Ćwiczenie wykonaj w testerce.
Opis problemu:
W liście n liczb całkowitych należy znaleźć elementy najmniejszy i największy, a następnie wypisać je w postaci krotki.
Specyfikacja problemu:
Dane wejściowe:
liczby– lista zawierająca liczby całkowiten– liczba elementów listy
Wyniki:
najmniejsza i największa liczba z listy wypisane w postaci krotki
Ćwiczenie wykonaj w testerce.
Słownik
wielokrotne powtarzanie operacji; algorytmy, w których iteracja służy znalezieniu wyniku, nazywamy iteracyjnymi
najprostszy algorytm wyszukiwania informacji w zbiorze elementów, polega na porównywaniu klucza, np. szukanej wartości, z każdym kolejnym elementem zbioru
zmienna tymczasowo przechowująca pośredni wynik obliczeń lub jakąś wartość